
线段树
文章平均质量分 72
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ 3747: [POI2015]Kinoman
题目大意:每个点有一个权值和一个颜色,每种颜色有一个得分,每个区间的得分为这个区间内只出现过一次的颜色的得分总和,求最大得分说个O(nlogn)的做法吧先预处理出对于每个节点,下一个跟他相同颜色的点的位置然后枚举最后选的那个区间的左端点r,用一颗线段树记录对于每个r,这个区间的得分是多少当左端点l向右移时,设当前左端点颜色为i,相当于把以l到nxt[i]-1为结尾的区间的得原创 2016-04-29 14:18:33 · 1350 阅读 · 0 评论 -
BZOJ1135: [POI2009]Lyz
题目大意:初始时滑冰俱乐部有1到n号的溜冰鞋各k双。已知x号脚的人可以穿x到x+d的溜冰鞋。 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人。xi为负,则代表走了这么多人。 对于每次操作,输出溜冰鞋是否足够。首先—— 每次二分图匹配显然是爆炸的所以有这么一个东西—— Hall定理:对于一个二分图,设左边有nn个点,右边有mm个点,则左边nn个点能完全匹配的充要条件是:对于1<=i原创 2017-03-01 13:50:29 · 1681 阅读 · 0 评论 -
BZOJ2080: [Poi2010]Railway
题目大意:数据范围10W的双栈排序..双栈排序是啥呢?给你一个序列和两个栈,每次你可以把序列头入到两个栈的任意一个,或者把两个栈的任意一个弹出到最终序列,最后要求最终序列是有序的,求一种字典序最小的入栈方案感觉自己应该是写不明白...日后如果有兴趣再来填坑吧..先附上多年以前vfk写的题解,非常详细再附上我的代码...#include#include#inclu原创 2016-12-29 14:53:57 · 732 阅读 · 0 评论 -
BZOJ2962: 序列操作
题目大意:给定n个数,要求支持区间加,区间取相反数,区间查询任意选c(c<=20)个数的所有方案中乘积的和和维护k次方的和很像,想要维护选c个数,就要把选1~c个数的方案全部维护出来 这样当合并两个区间的时候(pushup),只需要枚举左右区间分别取了几个数即可现在考虑两种修改操作: 1.区间取相反数 发现这种操作只会影响区间选奇数个数的情况,把这些答案全部变成相反数即可 2.区间加 这个原创 2016-09-07 10:46:07 · 622 阅读 · 0 评论 -
BZOJ3939: [Usaco2015 Feb]Cow Hopscotch
题目大意:给定一个棋盘,从左上角走到左下角,每次必须严格向右下走一步并且两个各自的标号不能相同,问一共有多少种走法设F[i][j]表示走到(i,j)这个格子的方案数,那么转移方程就是严格左上的所有格子的F值和减去和他相同颜色的F值和,前者可以直接维护前缀和得出,后者可以对每种颜色建一个动态开点的线段树来维护,时间复杂度O(NMlognm),空间复杂度O(NMlognm)原创 2016-08-11 16:18:16 · 906 阅读 · 0 评论 -
BZOJ4391: [Usaco2015 dec]High Card Low Card
题目大意:给定对方的出牌序列以及你的手牌,双方手牌一共是一个1到2n的全排列,一开始是点大胜出,你可以在任意时刻改一次规则变成点小胜出,求最多能赢多少次用贪心的思想,肯定一开始尽量用点大的,改规则之后用点小的,每次用卡的时候都用那个恰好能赢的卡是最优的,如果没有就用最小的,然后枚举一下改规则的时间,这样可以O(N^2)算出答案我们考虑先不枚举改规则的中间点,用F[i]表示前i个回合原创 2016-08-22 11:01:26 · 957 阅读 · 0 评论 -
BZOJ4383: [POI2015]Pustynia
题目大意:给出一些限制条件,每个限制条件都是一个区间内k个数比另外一些都大,问合不合法题目落下个条件 ∑k≤30W首先把这些限制条件拆开,每个不连续的区间拆成O(K)个连续的区间,然后就变成了KlogK个限制条件,每个条件是一个数比一段区间里的数都大这个可以连了边之后用记忆化搜索拓扑序Dp就好了但是连边是O(N^2)级别的,怎么办呢?就可以用线段树优化建图啦!首原创 2016-05-10 09:26:49 · 1443 阅读 · 0 评论 -
BZOJ3779: 重组病毒
题目大意:给一棵树,每个点一开始颜色互不相同,支持三个操作 1.将一个点到根的路径染成一种新的颜色 2.将一个新的点设为根,并将原来的根到这个点的路径染成一种新的颜色 3.查询一个子树(对于当前根)到根的路径期望颜色数 真TM是道神题,idea实在是太妙了首先由于第2个操作的特殊原创 2016-05-29 12:06:50 · 1785 阅读 · 0 评论 -
BZOJ3526: [Poi2014]Card
题目大意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列线段树维护两个值,分别代表这个区间的第一张牌以较小或较大的数开始,这个区间最后一张牌用尽量小的的数来结尾的话,会选较小的还是较大的还是无解。然后每次把交换当成修改就好啦!#include#include#def原创 2016-05-12 16:12:54 · 1331 阅读 · 0 评论 -
BZOJ4785: [Zjoi2017]树状数组
题目大意:给了一种错误的实现树状数组方式,每次随机在一个区间里修改一个值,问每次询问得到的答案是正确的概率首先我们可以慢慢琢磨一下这份代码:发现其实他就是在求后缀和 然后由于模2,其实整道题都相当于在异或 这样每次Query(L,R)=Find(R)−Find(L−1)=Xor(R,n)⊕Xor(L−1,n)=Xor(L−1,R−1)Query(L,R)=Find(R)-Find(L-1)=Xo原创 2017-03-29 15:20:30 · 1557 阅读 · 0 评论