zoukankan      html  css  js  c++  java
  • 分治算法

    CDQ分治:

    中心思想:

    按照偏序(时间可以作为偏序)分治,不断递归处理前一半元素对后一半元素的贡献,这样把问题转成了一个个先插入后修改的子问题,把动态修改问题转成静态问题(常常在每一层处理的时候用对询问(或修改)排序等方式消掉原本动态修改不能消掉的限制,再静态解决)。

    整体二分:

    中心思想:

    单次询问要满足可二分性,但是(check)复杂的很高,而且可以在预处理完后复杂度很低的单次判断,从而可以把所有询问一起二分,得到答案。

    具体做法:

    ((l,r))表示答案(输出结果)的范围,((L,R))表示答案在((l,r))范围内的询问的范围。每次二分答案,把所有((L,R))中的询问都(check)一遍,判断是在左区间还是右区间。

    对时间分治:

    按照时间分治,先把操作都变成有一个存活的时间区间,然后在时间结构上区间修改,最后遍历时间结构并修改,遍历到叶子结点(时间点)时信息便是当时的,询问即可。

    注意:

    分治的时候先递归,再归并排序,少一个(log),对所有操作都排序,在开始的时候记一下(wz),就可以统计(mid)前对(mid)后的操作了。

  • 相关阅读:
    Machine Learning Basic Knowledge
    What is the reason that a likelihood function is not a pdf?
    MySql 增加字段 删除字段 修改字段名称 修改字段类型
    Manual install on Windows 7 with Apache and MySQL
    linux 解压命令大全[转]
    MVC2项目实践
    JSP显示新闻
    servlet应用
    login登录页面
    java web基础
  • 原文地址:https://www.cnblogs.com/Smeow/p/10582633.html
Copyright © 2011-2022 走看看