zoukankan      html  css  js  c++  java
  • CDQ分治

    分治算法的基本思想是将一个规模为n的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.    --陈丹琦集训队论文
    例如归并排序
    复杂度分析(可是我并不会分析
    oT(n) = 2 * T(n / 2) + O(kn)=O(kn*logn)
    oT(n) = 2 * T(n / 2) + O(k) = O(kn)
    cdq分治是一种特殊的分治方法,初见于陈丹琦08年集训队论文
    适用条件:
    1.允许离线算法
    2.修改操作对答案的贡献相互独立,修改操作间互不影响
    模型:
    Solve(l, mid)
    (l, mid)对于(mid+1, r)的影响
    Solve(mid + 1, r)
    首先看一道三维偏序裸CDQ
    所以简单来说 cdq分治是把询问和修改一起操作,用[l,mid]中的修改更新[mid+1,r]中的询问。
     
    接下来稍微要转化一下的题
    二维前缀和+时间序+树状数组维护y
     
    这道题用到了cdq的常用处理方法 时间序因为对时间为i的询问有影响的修改的时间一定小于i,所以可以在时间序上进行分治。
     
    还是一道时间序的题,做法比较有趣
    时间序+树状数组维护max(x+y)
     
    用了时间维度的非典型CDQ
    bzoj 4137 http://www.cnblogs.com/lokiii/p/8125912.html(莫名插不进去链接
    用分治推掉外层线段树
     
    lazy:
    hdu 5127  还不会凸包
  • 相关阅读:
    [BZOJ3413]匹配
    [BZOJ3879]SvT
    [BZOJ1339] [Baltic2008] Mafia / 黑手党
    [BZOJ1834] [ZJOI2010] network 网络扩容
    [BZOJ1449] [JSOI2009]球队收益 / [BZOJ2895] 球队预算
    [BZOJ2597] [WC2007]剪刀石头布
    [BZOJ1283]序列
    [BZOJ2127]happiness
    Java公开课-04.异常
    Java公开课-03.内部类
  • 原文地址:https://www.cnblogs.com/lokiii/p/8108265.html
Copyright © 2011-2022 走看看