线段树
seeeagull
这个作者很懒,什么都没留下…
展开
-
[cf1406D]Three Sequences(线段树+差分)
给一个序列a,要得到两个数列b和c,使bi+ci=ai,且b序列递增,c序列递减,要使b和c中最大元素最小。同时会有q次修改,每次将a序列在(l,r)区间内的元素都加上x。首先由于b和c的性质,所以使b和c中最大元素最小,即是使max(bn,c1)最小。然后我们假设c1已确定,这样b1就也被确定,考虑能否确定b2和c2。由于要使bn最小,所以尽量使每个bi - bi-1尽量小,由于ai和ai-1已经固定,所以(bi - bi-1)+(ci - ci-1)已固定,等同于使ci-1 - ci尽量小。那么每次原创 2020-10-03 15:19:33 · 171 阅读 · 0 评论 -
[P3703][SDOI2017]树点涂色(dfs序+LCT+LCA+线段树)
首先每次染色都是染一种新颜色,且一定从根开始,所以从根到一个节点的相同颜色都在一段内,不同颜色数即是颜色段数。所以如果对于每个节点,维护一下它到根节点的不同颜色数,似乎操作2和3都可以求出了。对于操作2,用类似于树上差分的思路,x->y的颜色数=x到根的颜色数+y到根的颜色数-2*lca(x,y)到根的颜色数+1,因为每次都是染新颜色,所以两段的连接处不可能颜色相同,保证这样做是正确的。...原创 2019-05-15 23:27:11 · 138 阅读 · 0 评论 -
[AT2336] Flags(二分答案+2-SAT+线段树优化建图)
首先看出可以二分出距离,然后2-SAT判断是否可行。但建图时需要枚举每组节点,复杂度O(n²),且最多n*(n-1)/2条边,空间也开不下。如果现将2*n个位置排序,那么对于排序后第i个点,和它距离小于一个值的点分别在它左边和右边的两个连续区间内,于是可以线段树优化建图。建树时首先将每个节点向其父亲连边,代表子区间内的点一定在更大的区间里。然后枚举点,二分求出和 i 距离小于一个值的区间的端点...原创 2019-05-12 17:08:09 · 296 阅读 · 0 评论