其它-倍增
Endless_Way
这个作者很懒,什么都没留下…
展开
-
BZOJ 2588 Spoj 10628. Count on a tree
主席树+LCA对于每个点,建一棵该点到根路径上的权值线段树,用主席树搞一搞,对于每个询问(a,b),记c是他们的LCA,d是c父亲,用siz[a]+siz[b]-siz[c]-siz[d]查找即可- -WA到吐血才发现自己lower_bound里面的cnt打成n了。。。QAQ#include<cstdio> #include<cmath> #include<iostream> #include<al原创 2016-08-25 17:25:16 · 285 阅读 · 0 评论 -
BZOJ 4569 [Scoi2016]萌萌哒
ST表+并查集一个直观的想法是把[l1,r1],[l2,r2][l_1,r_1],[l_2,r_2]对应位置的元素并起来。若最后有cntcnt个集合,则答案就是9∗10cnt−19*10^{cnt-1},复杂度O(nm)O(nm),考虑优化它。实际上我们是在进行区间操作,那我们对区间进行维护。用ST表,记id[i][j]id[i][j]表示[i,i+2j−1][i,i+2^j-1]这一段节点。两段区原创 2017-02-12 21:08:02 · 291 阅读 · 0 评论 -
BZOJ 4444 [Scoi2015]国旗计划
破环为链+离散化+倍增环上问题一般转化为链上问题。本题破环为链之后再在末尾复制一条链,那么一个环上覆盖就等价于一个i~i+m的链上覆盖。对每一个点维护从它的左边最远能跳到的右边的点。发现这是一个树形结构。因此对于每一个询问倍增往上跳找到第一个点j满足j≥i+m。这样O(n*log^2)还注意到每个人的答案之差最多为1。假设不强制取任何人,此时最优解为A,那么显然强制取一个人的解是A或A+1。所以只要原创 2017-01-28 00:17:23 · 541 阅读 · 0 评论 -
BZOJ 4242 水壶
最小生成树+倍增发现如果水壶是定值,那地图上肯定存在许多以建筑物为中心的联通块。并且随着水壶的增大,联通块大小也增大,有一些联通块会融合。因此考虑把所有建筑物丢到队列搞BFS。如果两个联通块碰到了,就给这两个建筑物连上一条边。如果两个联通块代表的建筑之间已经存在一条路径可达,就不连。这样连出来是一棵树,而且也是最小生成树。然而这样是错的,有一个反例,因为对于同一个距离,队列更新有先后顺序。先更新的点原创 2017-01-31 22:39:07 · 751 阅读 · 0 评论