随笔分类 -  线段树

摘要:bzoj3526[Poi2014]Card 题意: 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i]。有m个操作,第i个操作会交换c[i]和d[i]两个位置上的卡片。每次操作后,你都需要判断,通过任意翻转卡片(把正面变为反面或把反面变成正面,但不能改 阅读全文
posted @ 2016-11-11 19:35 YuanZiming 阅读(231) 评论(0) 推荐(0)
摘要:bzoj1593[Usaco2008 Feb]Hotel 旅馆 题意: 给个长度为n的全为0的序列,m种操作,1 di表示求序列中最早出现的长度为di的值为0的连续子序列,并把这个连续子序列赋为1;2 xi,di表示将[xi,xi+di-1]置为0。n,m≤50000。 题解: 用一个线段树,维护三 阅读全文
posted @ 2016-09-26 21:48 YuanZiming 阅读(196) 评论(0) 推荐(0)
摘要:bzoj1230[Usaco2008 Nov]lites 开关灯 题意: 一个01序列,初始全部元素为0,两种操作:l到r全部元素取反、询问l到r1的个数。序列长度≤100000,询问个数≤100000。 题解: 线段树维护区间和,区间修改就让区间和变为区间长度减原区间和。 代码: 20160917 阅读全文
posted @ 2016-09-18 19:54 YuanZiming 阅读(279) 评论(0) 推荐(0)
摘要:bzoj3524[Poi2014]Couriers 题意: 给一个长度为n的序列a。1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。n,m≤500000。 题解: 先建主席树,之后在查找时,只走s 阅读全文
posted @ 2016-09-16 11:13 YuanZiming 阅读(200) 评论(0) 推荐(0)
摘要:bzoj1901 Zju2112 Dynamic Rankings 题意: 维护数据结构,支持区间第k大和单点修改。序列大小,操作数≤10000 题解: 构造一个树状数组,树状数组中的节点用主席树维护。一开始先插入序列中的节点,然后对于修改,就是将经过的树状数组上的主席树删除旧值,再插入新值;对于查 阅读全文
posted @ 2016-08-16 21:30 YuanZiming 阅读(137) 评论(0) 推荐(0)
摘要:bzoj3932[CQOI2015]任务查询系统 题意: m个任务,任务(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束,优先级为Pi。n个询问,每次询问第Xi秒正在运行的任务中,优先级最小的Ki个任务的优先级之和是多少。若Ki大于第Xi秒正在运行的任务总数,输出第Xi秒任务优先级之和。 阅读全文
posted @ 2016-08-03 13:48 YuanZiming 阅读(803) 评论(0) 推荐(0)
摘要:bzoj4552[Tjoi2016&Heoi2016]排序 题意: 给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:1:(0,l,r)表示将区间[l,r]的数字升序排序2:(1,l,r)表示将区间[l,r]的数字降序排序,最后询问第q位置上的数字。 题解: 二分最后这个数 阅读全文
posted @ 2016-07-30 13:31 YuanZiming 阅读(516) 评论(0) 推荐(0)
摘要:bzoj1067[SCOI2007]降雨量 题意: “X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年。由于有些年份的降雨量未知,有的说法是可能正确也可以不正确的。要求对于一个说法判断它是对、错、有可能。(即使有降雨量未知也有可能可以推 阅读全文
posted @ 2016-07-30 13:15 YuanZiming 阅读(733) 评论(0) 推荐(0)
摘要:bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集。 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以使合并均摊复杂度为O(nlog2n)。可持久化线段树实际上就是在更新节点时按主席树的插入方式新建一条 阅读全文
posted @ 2016-07-24 16:56 YuanZiming 阅读(250) 评论(0) 推荐(0)
摘要:bzoj2588 Spoj 10628. Count on a tree 题意: n点树,m个询问求点u到点v路径上第k小的点权。强制在线。n,m≤100000 题解: 用主席树维护某节点到根节点的权值数量sz,建树过程可以由父亲节点递推。询问就用倍增求出lca,然后路径上的sz值就为sz[u]-s 阅读全文
posted @ 2016-07-24 16:40 YuanZiming 阅读(239) 评论(0) 推荐(0)
摘要:bzoj4631踩气球 题意: 有一个序列和一个区间集合,每次将序列中的一个数-1,求此时集合里有多少个区间和为0。序列大小≤100000,区间数≤100000,操作数≤100000。 题解: 此题解法其实并不难,对序列建线段树,用线段树每个节点维护区间和及覆盖该区间的集合内的区间的链表,同时记录每 阅读全文
posted @ 2016-07-23 21:03 YuanZiming 阅读(315) 评论(0) 推荐(0)
摘要:bzoj3196Tyvj1730二逼平衡树 题意: 维护一个数列,操作:查询k在区间内的排名、查询区间内排名为k的值3、修改某一位上的数值、查询k在区间内的前驱(前驱定义为小于x,且最大的数)、查询k在区间内的后继(后继定义为大于x,且最小的数) 题解: 线段树套treap,我写了一个星期QAQ第一 阅读全文
posted @ 2016-07-20 20:36 YuanZiming 阅读(253) 评论(0) 推荐(0)
摘要:bzoj2243[SDOI2011]染色 题意: n点无根树,2类操作:将节点a到节点b路径上所有点都染成颜色c、询问节点a到节点b路径上的颜色段数量。 题解: 有点恶心的链剖,可以用包含区间颜色段数,左端点颜色,右端点颜色的结构体存储查询的结果。首先是线段树节点除了要保存区间颜色段数还要保存左右端 阅读全文
posted @ 2016-07-20 20:25 YuanZiming 阅读(159) 评论(0) 推荐(0)
摘要:bzoj4034[HAOI2015]T2 题意: N点树,以点 1 为根,且树点有边权。三种操作:把某个节点点权增加 a 、某个节点为根的子树中所有点的点权都增加 a 、询问某个节点到根的路径中所有点的点权和。 题解: 本题链剖可过。第二个操作只要每次在构造链的时候找到子树中在链中位置最大的节点,然 阅读全文
posted @ 2016-07-20 20:15 YuanZiming 阅读(263) 评论(0) 推荐(0)
摘要:bzoj1798[Ahoi2009]Seq 维护序列seq 题意: 维护序列,支持区间加、区间乘、区间求和模一个数。序列大小和操作数≤100000 题解: 线段树,加标记和乘标记的处理同bzoj4003。模的时候注意细节。 代码: 20160714 阅读全文
posted @ 2016-07-14 20:47 YuanZiming 阅读(211) 评论(0) 推荐(0)