CDQ分治
文章平均质量分 76
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
BZOJ 1492 货币兑换Cash(CDQ分治+斜率优化dp)
之前已经用斜率优化dp+平衡树维护凸点把这题给解决了,但是呢,这题的故事并没有结束。 首先膜拜CDQ陈丹琦大神Orz……昨天突然得知,其父亲是NUDT数学系的教授……与大神之间的距离居然如此之近。还是上论文:从《Cash》谈一类分治算法的应用 显然,用平衡树维护凸点的做法是可以的,但是在比赛中splay却是非常的不好写,编程复杂度极其的高。...原创 2017-12-01 21:40:45 · 666 阅读 · 0 评论 -
NEU 1704 三维偏序(CDQ分治+树状数组)
经典的三维偏序问题,cdq分治同样也是经典的做法。 不考虑这种方法的话,我们可以先对所有的数字按照x坐标排序,然后按顺序把另外两个坐标添加进二维树状数组里面,每次查询它前面的数字个数即可。然而这里总共有100000个数字,开二维树状数组即使在离散化的情况下,也会爆内存,于是貌似只能用CDQ分治。 首先当然的,对x进行排序,然后为了分治的方便,就直接把x坐标离散化。然后直接进入分治,由于这题的cdq分治在单位区间的时候不需要进行什么修改,所以我们大可以先分治两个小部分,再处理大原创 2017-12-02 19:46:58 · 596 阅读 · 0 评论 -
CodeForces 848C Goodbye Souvenir(CDQ分治+平衡树/set+树状数组)
再度加深对CDQ分治的理解。大致题意:给你一个数字序列,然后有两种操作。一是修改,把某个位置的数字改成另外一个数字;二是求一个区间[l,r]中所有同类数字的最大跨度和,即如样例所示。 首先,对于这个同类数字中的最大跨度和,对于每一个数字可以按照套路,分成所有前后相邻两个同类数字的距离和。即1、2、1、3、1、2、3对于数字1的最大跨度,我们可以写成(3-1)+(5-3)=4,也样子相当于只需要维护前后两个相邻的数字即可。然后,我们考虑如何对于每个数字维护这个前后关系,支持删除然后又支持修改,原创 2017-12-14 20:46:56 · 464 阅读 · 0 评论 -
CodeForces 1045G AI robots(CDQ分治 + 树状数组 + 单调队列)
大致题意:有很多个机器人,他们要相互交流有一些限制条件。首先是,两个人要相互能够能够看到;其次,两个人的智商的差不超过K。现在给出每个机器人的视力范围和他们的智商,现在问你总共有多少对机器人能够相互交流。 首先来看下总共有多少个限制条件。由于是要求双方都能够看到,所以显然是要按照视野半径去排序的。然后要求两个人的智商差要在一定的范围内的,所以也要按照智商去排序。另外还要跟自己的位...原创 2018-10-21 15:16:45 · 433 阅读 · 0 评论