标签:
【题意】
把一个环 分成 m 份, 每份各属于 n 个国家中的一个, 每次 给 Li ~ Ri 这段区间加上 Ci, 问第 i 个国家 在第几次 达到了 Ki。
【题解】
考虑这道题的弱化版: 只有一个国家, 二分修改操作就可以 log n 地计算出答案了。
那么这道题 又有哪里被强化了呢?
区间修改自然的应对措施: 线段树或树状数组
能否还向原来一样二分呢? 似乎是可以的,只是每一次都要对 每一个国家分别计算 在 l ~ mid 的这段区间是否合法就可以了。
噔噔噔! 于是“整体二分”的大致思想就出来了。
具体实现的时候, 每一次 二分在 判是否合法的时候 都可以将 当前的 集合 分成 两个 子集 :在 mid 之前就可以 完成的 和在 mid 之前不可以完成的, 把这二者分别递归至 l ~ mid 区间 和 mid + 1 ~ r 区间
代码可以看这个人的,我的比较丑,,
整 体二分 写出来感觉很像一棵线段树呢, 其实整体二分就是把在二分每一个点的时候所有可能走到的路径 都走一遍(走出来自然是一个完全二叉树), 避免了一个点被计算多次, 虽然也会走到一些不必要的点, 但在整体上 还是 把 n * logn 的 复杂度 降为 2 * n 了。
标签:
原文地址:http://www.cnblogs.com/lixintong911/p/4212389.html