
CDQ分治/整体二分
文章平均质量分 55
wwyx2001
OIer----这条路,仅一人独行
展开
-
[BZOJ2674]Attack(整体二分+树状数组套线段树)
题目:我是超链接题解:Emmm。整体二分+树套树。 我们先把坐标离散,权值嘛,离不离散的无所谓,因为log1e9也是个常数 这里的交换操作相当于两个修改操作,每个修改操作也要拆成两个:把以前的减去,把新来的加上 那么现在的操作就是修改,询问就是查询第k小 我们依然按照权值二分,每次把小于等于mid值得操作执行,可以完成任务的询问(小于的数字比k多)放在左边 那么为什么不能...原创 2018-03-26 22:01:16 · 247 阅读 · 0 评论 -
[BZOJ2738]矩阵乘法(整体二分)
题目:我是超链接题解:又是一个整体二分了,因为本人的手残导致现在才调出来,具体来说就是 首先把权值离散 将所有的点看成是单个插入操作,所有的询问看成是查询操作 二分第k小的数mid,将插入操作按照权值排序了之后就是在一段区间里 将<=mid的数加入到bit里,然后对于每一个询问在bit中查询 如果不够的话就往大的走,如果小的话就往小的走 注意如果向mid,...原创 2018-03-24 21:30:27 · 285 阅读 · 0 评论 -
[BZOJ2527][POI2011]Meteors(整体二分)
题目:我是超链接题解:对于每个国家来说,求出流星雨是第几次是一个妥妥的二分,但是这么多国家的话,我们用整体二分就行了 我们调用solve(1,k,1,n)就可以解决问题,即[1,k]范围内的流星雨可以解决[1,n]的国家 每次让在[l,mid]范围内的流星雨落下,回溯时要删除,二分询问的时候完成任务的国家放在左边,没完成的放在右边 特别要注意流星雨落下时l和r的大小。。 然后就...原创 2018-03-24 09:53:16 · 251 阅读 · 0 评论 -
[BZOJ3110][ZJOI2013]K大数查询(整体二分)
题目:我是超链接题解:这道题目的暴力就是线段树套平衡树了,复杂度O(nlog3n)O(nlog3n)O(nlog^3n),根本过不去啊 然后就是整体二分的第一题了 话说我一开始写线段树套平衡树的时候,发现线段树是在位置上二分,在查询有多少个比x大的时候是在平衡树上二分,那不如我们合成一个二分吧 有点类似cdq分治的思想 整体二分是指在二分答案的时候把询问和操作也跟着一起分到左边...原创 2018-03-23 20:48:48 · 249 阅读 · 0 评论 -
[BZOJ2253][2010BJWC]纸箱堆叠(dp+cdq分治)
题目:我是超链接题解:这个东西O(n2)O(n^2)的最长上升子序列嘛 不过过不了啊,回忆一下求最长上升子序列的过程,我们会发现其实就是枚举n,然后寻找三项都小于ta的延续个数最长的 而这是三个元素,三维偏序cdq分治没跑了 其实我们只需要修改一下树状数组,用于求i 并且因为前面的对后面的一定是有影响的,所以我们并不能变换顺序,必须是:处理左区间,处理左区间对右区间的影响,处理原创 2018-01-15 21:19:14 · 722 阅读 · 0 评论 -
[BZOJ3963][WF2011]MachineWorks(斜率优化dp+cdq分治)
题目:我是超链接题解:这题目有点眼熟啊。。。莫不是货币兑换? 那根据套路来一波dp,f[i]表示到第D[i]天卖掉所有机器得到的最多金钱,显然f[0]=c f[i]=max(f[i−1],f[j]−P[j]+(D[i]−D[j]−1)∗G[j]+R[j])f[i]=max(f[i-1],f[j]-P[j]+(D[i]-D[j]-1)*G[j]+R[j]) 列完方程我们可以知道,之原创 2018-01-14 20:20:45 · 321 阅读 · 0 评论 -
[BZOJ2726][SDOI2012]任务安排(斜率优化dp+cdq分治)
题目:我是超链接题解:Emmm首先一眼dp了吧。O(n3)O(n^3)很蒻的博主就设计了一个浅显的dp[i][j]表示前i个分成j组的最小费用,O(n3)O(n^3)而且看上去根本没有办法优化的样子?!#include #include #include using namespace std;int n,s,T[10005],F[10005],dp[5原创 2018-01-11 19:00:26 · 315 阅读 · 0 评论 -
[BZOJ1492][NOI2007]货币兑换Cash(斜率优化dp+splay|cdq分治维护凸包)
题目:我是超链接题解:f[i]表示第i天最多能获得多少钱,那么f[0]=s 题目中有提示说要不全部买入要不全部卖出,其实比较好理解,因为能赚钱一定要尽量赚 首先考虑一个问题,如果某天赚到的钱知道了,能换成A券的数量a和能换成B券的数量b就确定了 a/b=rate[i] a*A[i]+b*B[i]=f[i](A[i],B[i]表示第i天两种金券的价值) 那就考虑已知f[1.原创 2018-01-11 18:53:01 · 400 阅读 · 0 评论 -
[BZOJ3939][Usaco2015 Feb]Cow Hopscotch(cdq分治)
题目:我是超链接题解:也算是cdq分治与dp的小小结合?! 思路就是把行数分治按列循环,而且一个点一个点的太多特判(比如不能在同一行啊),我们可以直接按照行做,这样我们可以不去考虑列对结果的影响 总体的就是:用所有的-颜色相同的,不要忘记每次对于颜色清零代码:#include using namespace std;const int N=755;const in原创 2018-01-10 21:17:16 · 340 阅读 · 0 评论 -
[BZOJ4430][Nwerc2015]Guessing Camels赌骆驼(cdq分治)
题目:我是超链接题解:看上去毫无头绪,但字里行间的“相对位置”很有意思,代表了每头骆驼在三个人中的位置的“相对大小” 那么只需要把每头骆驼在三个人中的位置建立一个三元组(x,y,z),就是一个很裸的cdq分治啦代码:#include #include #define LL long longusing namespace std;const int N=200005;原创 2018-01-10 16:56:37 · 365 阅读 · 0 评论 -
[BZOJ3295][Cqoi2011]动态逆序对(CDQ分治||树套树)
题目:我是超链接题解:记得很久以前给舒老师看这道题,他一眼秒了然后写了出来,给我造成了极大的心理创伤。。cdq分治首先可以考虑把这个处理过程倒过来,因为删数我们不擅长,但是添加是ok的 那么问题变成:一开始有一些数(全删完后剩的),求逆序对然后每添加一个数求一次逆序对 我们很快就可以发现这个题目的三个关键词:位置,时间,大小 三维偏序! 对于一个三元组(a,b,原创 2018-01-10 15:47:48 · 322 阅读 · 0 评论 -
[BZOJ2716][Violet 3]天使玩偶(cdq分治||KD-tree)
题目:我是超链接题解:这题目一眼KD-tree啊,写了一发A了,等等我不是要练cdq分治吗 然后又写了cdq分治,其实不管对于这两个的哪个都是模板题啦KD-tree:真·模板题 cdq分治: 首先考虑如果只要求一个点左下角与它最近的点有多远 设给定的点为(x,y),左下角有某个点(u,v) 就是要求(x-u)+(y-v)最小。 也就是要求(x+y)-(u+v)最小。原创 2018-01-09 19:18:07 · 622 阅读 · 0 评论 -
[BZOJ2683]简单题(cdq分治)
题目:我是超链接题解:Emmm,这不是那道【简单题】吗,一眼二维树状数组 这道题目不强制在线啦,那我们可以用cdq分治 把每个询问拆成二维前缀和的形式,用乘1/-1的方式确定正负,至于方格里每个数的值嘛,我们就在权值树状数组中加多少就好啦 要对每个询问求符合如下条件的修改操作的贡献: 1.时间在它之前 2.x坐标小于等于它 3.y坐标小于等于它 三维偏序! 按照时间原创 2018-01-09 15:22:30 · 433 阅读 · 0 评论 -
[BZOJ3262]陌上花开(cdq分治+讲解+小结)
题目:我是超链接题解:那么这道题就是三维偏序的题啦 具体情况下见普及向咯 要特别注意这里是权值树状数组,所以最大值要到k而并非n 并且如果像这样写在cdq中加一个merge,就免去了快拍的logn,总复杂度是O(nlogn)O(nlogn)代码:#include #include #include #include using namespace st原创 2018-01-08 20:27:16 · 361 阅读 · 0 评论