Loading

分治

普通分治

CF1442D Sum
有一个显然的结论:不取满的最多一个。然后对于每一位置个算一下除了这个位置的背包情况。
这个东西可以分治处理,从而做到 \(O(nk \log n)\)

点分治

CF321C Ciel the Commander
我太菜了,这都没有想到!!!
只要跑一遍点分治,在每一次的重心上染色即可(第一次的重心为 'A', 第二次为 'B', 第三次为 'C', 以此类推)。

CF293E Close Vertices
点分治,然后启发式合并套上一个线段树即可。

CF715C Digit Tree
水题,对于每一个结点统计一下从根到 \(x\) 和从 \(x\) 到根的数膜 \(p\),然后把从 \(x\) 到根的数转化成这一条链的另一边膜 \(p\) 需要是多少。 map 启发式合并即可。

线段树分治

P5787 二分图 /【模板】线段树分治
首先在时间轴上建立线段树,然后每一次操作就是在上面打标记,然后用可撤销并查集维护即可。

CF576E Painting Edges
线段树分治模板,对于在一条边上的操作 \(x\)\(y\), \(x\) 的操作范围是 \([x + 1, y - 1]\)。在 \(y\) 处判断 \(y\) 操作可不可行,不可行操作替换成上一次的颜色。

CF938G Shortest Path Queries
同线段树分治模板,这道题只要维护一个权值并查集即可。因为是异或,不需要 LCT !!!

CF1140F Extending Set of Points
首先按照横坐标和纵坐标建立二分图。
答案就是每一个联通二分图的 左部图点数 * 右部图点数 的和。

二分

普通二分

CF1419F Rain of Fire
对于答案二分,然后并查集判定是否可行即可。

CF505E Mr. Kitayuta vs. Bamboos
对答案二分。倒着做,原先增加 \(a_i\) 变成了减少 \(a_i\), 减少 \(p\) 变成增加 \(p\)。然后每次选择答案中最早变成 \(< 0\) 的位置加上 \(p\) 即可。

wqs 二分

CF321E Ciel and Gondolas
首先对这个 \(k\) 进行 \(wqs\) 二分,对于每一个分出来的段加上一个累赘。然后就是一个很显然的 \(dp\) 了。大概可以优化成这种形式:
\(f_i = \min(f_j - sum_{i,j}) + x + sum_{i,i}\)
现在已经过了,但是考虑优化。
然后这个东西是又是有决策单调性的,维护个单调队列就好了。

CF739E Gosha is hunting
二分 \(b\),答案关于 \(b\) 的函数是凸函数。然后 \(dp\) 一下即可。

CF802O April Fools' Problem (hard)
二分 \(k\), 然后使用 反悔贪心 来模拟。

P6246 [IOI2000] 邮局 加强版
这里有个 "选取 \(k\) 个" 的东西,可以 wqs 二分。设计 \(dp_i\) 表示选择到 \(i\) 的最小代价。
发现这个东西具有决策单调性,和 诗人小G 一样,每次二分来解决。


特别注意:

关于邮局

我终于明白了!

例如说我们 solve(mid) >= m 才计入答案。

如果我们遇到了一条线段,solve 函数会选择最后端的,这样才能保证答案正确(否则会遇到正确的答案而忽略它)

整体二分

P3834 【模板】可持久化线段树 2(主席树)
显然直接整体二分就好了。

P1527 [国家集训队]矩阵乘法
弄个二维树状数组再整体二分就好了

AT1998 [AGC002D] Stamp Rally
在整体二分的过程中,在叶子结点把边给加进去。

P2617 Dynamic Rankings
整体二分加上修改。把修改和操作放在同一个篮子里即可。

posted @ 2020-10-20 13:14  zhoukangyang  阅读(64)  评论(0)    收藏  举报