编程语言
首页 > 编程语言> > trivial分治算法

trivial分治算法

作者:互联网

按时间分治:

  1. CDQ分治
    解决大多可以归化为kkk维偏序问题的离线算法。
    KKK维偏序问题的bitsetbitsetbitset解法:
    在这里插入图片描述
    [已完成]例题1:CF 70 D ,支持动态加点的凸包问题,可以使用CDQ分治变成离线.
    [已完成]例题2:CF 848C, 设一段区间的价值为区间内每个出现过的数,最后一次出现的位置-第一次出现的位置之和。要求支持单点修改和区间查询。
    解法:把每个 ai 看作二元组 (i,prevai)(i,prev_{a_i})(i,prevai​​),则 aia_iai​ 在区间内的贡献为 li,prevairiprevai\sum_{l≤i,prev_{a_i}≤r}i−prev_{a_i}∑l≤i,prevai​​≤r​i−prevai​​,中间的部分均消去,剩余的贡献恰为题目所求。因此,时间、iii、prevaiprev_{a_i}prevai​​ 组成了三维数点问题的三个维度,套用 CDQ 分治解决。
    例题3:【UOJ#50】【UR #3】链式反应(分治FFT,动态规划)
  2. 线段树分治
    动态图连通性.
    对每个物品求不包含它的01背包.
    [已完成]【HNOI】城市建设:支持修改边权,求 MST 边权和.
    对于一段时间区间 [l,r],我们把这段区间中修改到的边称为 待修边,其余的边称为 固定边。
    solve(l,r,V,E)solve(l,r,V,E)solve(l,r,V,E) 表示当前分治的时间区间为 (l,r)(l,r)(l,r),缩点后的连通块集合为 VVV,不确定是否会出现在 MST 中的固定边集合为EEE。初始 V=1,2,,nE=V={1,2,…,n},E=\emptyV=1,2,…,n,E=∅。
    在我们递归到某个儿子前,只在当前节点的另一个儿子中修改的待修边会变为固定边,将它们加入 EEE。
    对于剩余的待修边,用它们尽可能的连接 VVV 中的连通块;此时若存在两点 (u,v)(u,v)(u,v) 尚未连通,那么,任何待修边都不可能使它们联通,可以直接用 E 中的边将这些连通块连起来,并缩点至任意两点可以通过待修边相连。
    由于待修边最多有 O(rl)O(r−l)O(r−l) 条,此时的 VVV 大小也是 O(rl)O(r−l)O(r−l) 的。
    对于剩余的 EEE 中的边,按权值排序后,用它们尽可能的连接 VVV 中的连通块;此时若存在一条边的端点已经连通,则无论待修边的权值如何,这条边都不可能在 MST 中,可以直接从 EEE 中删除。
    由于此时 V 大小已经为 O(rl)O(r−l)O(r−l),EEE 中剩余的边最多保留一棵生成树,因此此后 4E$ 的大小也是 O(rl)O(r−l)O(r−l)。
    我们发现,递归到任何一个节点时,耗费的时间都是 O(rl)O(r−l)O(r−l) 级别的,因此总复杂度为 O(nlog2n)O(nlog^2n)O(nlog2n)
  3. 二进制分组
    动态凸包,强制在线.
    [已完成]UOJ 191 UnknownUOJ\ 191\ UnknownUOJ 191 Unknown
  4. 整体二分
    [已完成]【LG1527】[国家集训队]矩阵乘法
    CF 102354 B在这里插入图片描述
    调和级数枚举约数+整体二分+莫比乌斯反演。
  5. 带权⼆分/决策单调性
    a<b<c<da<b<c<da<b<c<d 如果 w(a,c)+w(b,d)w(a,c)+w(b,d)w(a,c)+w(b,d) 比 w(a,d)+w(b,c)w(a,d)+w(b,c)w(a,d)+w(b,c) “不会更劣”,就称此类 dp 满足四边形不等式。满足四边形不等式的 dpdpdp 均具有决策单调性。(充分,但不必要)
    [已完成]CF 321E 有一个沿主对角线对称的非负方阵,把它的主对角线分成 k 块,每块的权值是对应子方阵的和。求最小代价。
    由于方阵非负,决策单调性显然。
    用分治处理决策单调性的方法可以做到O(nklogn)O(nk\log n)O(nklogn)
    NOI 2009 诗人小G.
    CF 868F 将一个数列分成k段,每段的代价是相同的数字的对数。 求代价总和最⼩。
    给一个凸包,选 k 个点使得围成的面积最大。
    考虑枚举起点,可以带权二分+决策单调性 O(nlogwlogn)O(nlogwlogn)O(nlogwlogn)求出确定起点的答案,期望随机 nk\frac n kkn​ 次就可以得到最优答案。
Freopen 发布了640 篇原创文章 · 获赞 95 · 访问量 9万+ 他的留言板 关注

标签:连通,分治,CF,修边,算法,EEE,prevai,trivial
来源: https://blog.csdn.net/qq_35950004/article/details/104148908