分治(CDQ)
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
【省选模拟】20/04/13 切割 (分治)(决策单调性)(DP)
传送门思路:预处理 lislislis,每一个 lislislis 是 xxx 单增 yyy 单减的,那么考虑 lislislis 之间的转移我们考虑两个决策点 j,kj,kj,k,其中 jjj 为最优决策点,那么dpj+xjyj−xjyi−yjxi≤dpk+xkyk−xkyi−ykxi(yk−yj)xi+(xk−xj)yi≤fk−fjdp_j+x_jy_j-x_jy_i-y_jx_i\l...原创 2020-04-13 20:04:24 · 213 阅读 · 0 评论 -
「JOISC 2020 Day1」扫除 (分治)(线段树)(平衡树)
传送门首先考虑 Subtask 3Subtask\ 3Subtask 3,这些点是单调的,所以用线段树维护区间赋值Subtask 4Subtask\ 4Subtask 4,没有插入,考虑如果一个点被推到一个地方,那么它与其它的相对顺序就不会变,所以我们用动态开点线段树来找点,用一个平衡树来维护被推的点,平衡树支持插入,区间赋值对于有插入的情...原创 2020-03-25 23:54:36 · 403 阅读 · 0 评论 -
「JOISC 2020 Day2」变色龙之恋 (交互题)(分治)(并查集)
传送门O(n2)O(n^2)O(n2) 做法:两两查询一次,那么给颜色数为 1 的数对连边,那么一个点可以连出 1 或 3 条边对于一条的可以直接确定,对于 3 条的,假设当前位 iii,它喜欢的为 xxx,喜欢它的为 yyy,颜色相同的为 zzz,那么当且仅当查询 (i,y,z)(i,y,z)(i,y,z) 时为 1,如果我们给 (i,y),(i,z)(i,y),(i,z)(i,y),(i...原创 2020-03-25 00:06:17 · 439 阅读 · 0 评论 -
「NOI2019」I 君的探险 (交互题)(随机化)(整体二分)(二进制)
传送门一道很有趣的交互题测试点 1−51-51−5,直接 nnn 次修改 n2n^2n2 次查询就可以了测试点 6−96-96−9,这一部分是两两配对的点,可以整体二分改一半然后查令一半,如果有显然是与前一半配对还有一个骚气解法是让每个点有 1/21/21/2 的概率被修改,显然同色的是连了边的,递归处理测试点 10−1110-1110−11,这是一颗上面结点比下面小的树,问题转换为确定...原创 2019-11-28 22:50:10 · 475 阅读 · 1 评论 -
NOI.AC CSP-S 模拟 Round 4 简要题解
比赛链接T1一个数,有贡献,当前仅当包涵它的区间个数为奇数发现区间长度为偶数时没有贡献,答案为 0长度为奇数时贡献是第 1,3,5...1,3,5...1,3,5... 个数,预处理两个前缀异或和即可T2结论题,orz发现对于一个联通块,如果边数 - 点数为偶数,一定可以有一种方案使得全部都是奇数如果边数 - 点数为奇数,一定可以有一种方案使得只有一个点是偶数于是并查集维护一下...原创 2019-10-20 16:51:12 · 225 阅读 · 0 评论 -
P4093 [TJOI2016]序列 [CDQ+DP]
传送门我们发现三维偏序问题用CDQ分治实现对于[L-R]区间的DP的值, 我们先递归处理[L-Mid]然后用[L-Mid]的值更新 [Mid+1-R], 最后递归处理[Mid+1 - R]中途左边按a[i]排序, 右边按Min[i]排序, 然后两个指针扫就可以了#include<bits/stdc++.h>#define N 100050using n...原创 2019-02-15 21:01:48 · 157 阅读 · 0 评论 -
近期刷题总结[ 19 04 21 ]
目录P2056 [ZJOI2007]捉迷藏[括号序列 + 线段树]P3857 [TJOI2008]彩灯[ 线性基 ]P4570 [BJWC2011]元素[ 贪心 + 线性基 ]P5304 [GXOI/GZOI2019]旅行者 [ dijsktra ]P5303 [GXOI/GZOI2019]逼死强迫症[ DP + 矩阵乘 ]P5300 [GXOI/GZOI20...原创 2019-04-21 14:30:04 · 679 阅读 · 0 评论 -
P4755 Beautiful Pair [分治+主席树]
传送门我们枚举最大值的那个点pos, 然后枚举l-pos中的值, 在pos-r中查有多少个<= a[pos]/a[i]用主席树来完成(先离散化), 在序列随机的情况下O(nlogn^2)#include<bits/stdc++.h>#define N 100050#define LL long long#define Re registerusing nam...原创 2019-01-30 22:45:09 · 160 阅读 · 0 评论 -
天使玩偶 [CDQ分治]
传送门我们可以将这些操作看成(x,y,t) 三元组 , 表示x,y坐标 , 与时间CDQ 分治时 将前一半时间的修改提出来 , 再将后一半时间的询问提出来然后按x 排序 , 这样就是一个二维偏序了 , 但是有一个问题 , 我们如何求dis发现可以分4种情况 , 这里拿左下举个例子我们发现 于是 x 按顺序插入 , 在树状数组的y 的位置插入(xi + yi) , 询问就是x...原创 2019-01-14 22:41:16 · 491 阅读 · 0 评论 -
动态逆序对[CDQ分治]
题目描述对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。输入格式:输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。输出格式...原创 2018-10-21 21:31:52 · 271 阅读 · 0 评论 -
K大数查询[整体二分][线段树]
题目描述有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。输入格式:第一行N,M接下来M行,每行形如1 a b c或2 a b c输出格式:输出每个询问的结果输入样例#1: 2 51 1 2 11 1 2 22 1...原创 2018-10-21 16:58:17 · 228 阅读 · 0 评论 -
理解整体二分[例题[Dynamic Rankings]]
[整体二分的概述]大家应该知道怎么一组找静态区间第k大二分答案出mid,如果比mid小的数的个数>k , mid变小,否则mid变大当有很多组时,复杂度很不优秀,因此出现了整体二分即将所有操作一起二分答案刚刚理解整体二分时,立马想到了一幅图,与大家分享一下想必大家看过吧整体二分就是这么一个过程很多询问与修改(不同颜色的球) 通过很多层筛选(递归二分) 最终...原创 2018-10-20 15:10:30 · 355 阅读 · 0 评论 -
简单的分治
1.逆序对#include<bits/stdc++.h>#define N 100005using namespace std;int n,ans,a[N],cur[N];int merge(int l,int r){ int mid=(l+r)>>1,i=l,j=mid+1,cnt=0; for(int k=l;k<=r;k++){ if(j&...原创 2018-07-29 17:51:48 · 229 阅读 · 0 评论 -
CDQ分治
let's start with a simple question----传说中的逆序对第一种方法是归并排序顺便求int merge(int l,int r){ int mid=(l+r)>>1,zz1=l,zz2=mid+1,sum=0; for(int i=l;i<=r;i++){ if(zz2>r||zz1<=mid&&...原创 2018-07-30 22:02:06 · 404 阅读 · 0 评论