分治乱做乱讲

水平有限,题目太水 or 和分治关系不大 求轻喷 /kk

CF1375H Set Merging

考虑如何把一个序列的每一个区间的集合都求出来。

按权值分治成大小两个序列,递归下去,然后再合并到一起。

需要的操作次数是 \(T(n)=2T({n\over 2})+{n^2\over 2}=n^2\) ,看起来不错但是过不去。

再对值域分块,每个块分别做,询问的时候把这几个块合并到一起。

设块大小为 \(B\) ,则操作次数为 \(nB+{qn\over B}\)\(B=\sqrt q\) 时刚好卡过。

CF1261F Xor-Set

题目标签有分治,所以这题是分治

区间看起来一点性质都没有,所以把一个区间用类似线段树/字典树的方法分成 \(O(\log w)\) 个区间。

暴力在两边各枚举一个区间,把它们合并起来,最后再把合并出来的区间插入字典树中,即可做到 \(O(n^2 \log^3 w)\) 的复杂度。

考虑合并出来的区间主要和前缀较短的区间有关,因此可以在一边枚举区间,在另一边的同层枚举出现过的前缀。

由于一层中的前缀个数是 \(O(n)\) 的,所以总复杂度 \(O(n^2 \log^2 w)\)

CF1019E Raining season

显然一条路径是一个一次函数,也可以看做一个点 \((k,b)\) ,只要能把所有路径对应的点的凸包建出来就做完了。

考虑点分治,然后合并路径就是闵可夫斯基和。

然而不能合并同子树的点,仿佛需要分治求和,感觉很难受?

边分治即可。

CF938G Shortest Path Queries

众所周知在这题的背景里,一个连通块中两个点的最短路就是任意一条路径再异或上任意一些环。

路径可以选一棵生成树,而把所有由一条非树边和对应的树边组成的环考虑进去后,任意一个环都可以被拼凑出来。

所以最大异或和就可以由线性基维护。

有删边?线段树分治即可。

CF733F Test Data Generation

先要看懂题,枚举 \(k=2^u\) 之后转化为求 长度为 \(n \le maxn\) ,值域在 \([1,maxa/k]\) ,且 \(n\) 为奇数, \(a_n\) 为奇数的递增序列个数。 然后答案就是

\[\sum_{u} \sum_{i=1}^{\lfloor\frac{a}{2^{u}}\rfloor}[i \text { 为奇数}] \sum_{j=1}^{n-1}[j \text { 为偶数}]\left(\begin{array}{c} i-1 \\ j \end{array}\right) \]

这个式子看起来很奇怪,不太会优化。

由于 \(n\) 比较小,所以可以直接设 \(f_{i,j,0/1}\) 表示前 \(i\) 种数,选了 \(j\) 个放进序列里,最后一个是奇数/偶数的方案数,然后倍增+NTT即可求解。

求解的过程中把每一个 \(u\) 都算了一遍,所以复杂度是 \(O(n\log a\log n)\)

LOJ6145. 「2017 山东三轮集训 Day7」Easy

动态点分治。

点分树有一个性质:任意两个点在原树上的路径也会经过点分树上的 \(lca\)

因此,做询问的时候可以枚举 \(lca\) ,钦定它在路径上。如果绕了远路也不会使答案更优,所以正确性有保证。

在一个分治重心就只需要找到编号在某一个区间的离它最近的点了,用动态开点线段树即可维护。更好的做法可能是对分治子树内的点的标号进行离散化,减少常数也降低空间复杂度。

LOJ3273. 「JOISC 2020 Day1」扫除

看这里: https://www.cnblogs.com/p-b-p-b/p/13283018.html

LOJ2341. 「WC2018」即时战略

看这里:https://www.cnblogs.com/p-b-p-b/p/10848181.html

LOJ3039. 「JOISC 2019 Day4」蛋糕拼接 3

看这里:https://www.cnblogs.com/p-b-p-b/p/13301730.html

Codechef MARCH17 Sum of distances

考虑分治。

由于图的特殊性,删掉连续 3 个点之后图就会不连通,所以考虑中间的三个点,则横跨左右的点对的最短路必然会经过其中一个。

从这 3 个点分别跑最短路,设左右两个点的最短路分别为 \((x_1,x_2,x_3),(y_1,y_2,y_3)\) ,那么贡献即为 \(\min(x_1+y_1,x_2+y_2,x_3+y_3)\)

对三种情况分别计算贡献,就是一个普通的二维偏序,用树状数组维护即可。

然后两边的贡献就可以分别做了。

区间变得较小的时候暴力即可。

posted @ 2020-07-20 22:09  p_b_p_b  阅读(451)  评论(0编辑  收藏  举报