随笔分类 -  线段树

摘要:传送门【题目分析】线段树合并裸题了吧。。。。将每个岛视作一棵权值线段树,然后直接按照题目意思去进行合并,由于只有查询第K大岛的询问,所以merge过程就直接递归到叶子节点,一直合并size即可。第一次写线段树合并结果有一个地方写错调了半天,唉。。。【代码~】#incl... 阅读全文
posted @ 2019-01-19 14:21 Ishtar~ 阅读(225) 评论(0) 推荐(0)
摘要:传送门【题目分析】线段树大板题,主要就是靠码量和debug能力。。。既然涉及到区间取反,那么同时记录0和1的信息。对于0,1操作,打上区间覆盖标记即可。对于2操作,打区间取反标记,但注意如果该区间已经打了区间覆盖标记,那么其实取反标记作用只是将0改为1,所以可以直接将... 阅读全文
posted @ 2018-12-22 16:07 Ishtar~ 阅读(187) 评论(0) 推荐(0)
摘要:传送门【题目分析】蒟蒻考完只能刷水题,还被水题翻来覆去的吊打qwq对于给定区间[l,r],考虑计算它的期望费用,就是 总的费用/总的情况数总的情况数很好确定,我选择规定可以第一次选的比第二次大,所以计算总贡献后要乘2。然后考虑计算总的费用。考虑一个点i,,那么他能产生... 阅读全文
posted @ 2018-11-23 21:13 Ishtar~ 阅读(143) 评论(0) 推荐(0)
摘要:传送门【题目分析】板子题不想写题解(我已经被SDOI染色恶心死了)。。。直接看代码即可。【代码~】#includeusing namespace std;const int MAXN=2e7+10;int n,q;int root[MAXN>>1],lc[MAXN],... 阅读全文
posted @ 2018-11-01 22:07 Ishtar~ 阅读(159) 评论(0) 推荐(0)
摘要:传送门【题目分析】主席树经典问题,静态查询区间第k大数。拖了很久都没有写的模板。。。。结果差不多此次%你赛都考,痛定思痛后,决定好好研究下。主席树可以近似理解为权值线段树的前缀和的形式,详细讲解可参考wcr写的主席树讲解:传送门。回到该题,因为不涉及修改操作,所以我们... 阅读全文
posted @ 2018-10-29 09:23 Ishtar~ 阅读(167) 评论(0) 推荐(0)
摘要:洛谷传送门【题目分析】跟数学计算一题差不多。就是开一个q那么大的线段树,初始叶子节点全部为0,操作都很常规。。。。比较氵的题。【代码~】#includeusing namespace std;const int MAXN=1e6+10;;const int INF=0... 阅读全文
posted @ 2018-10-26 22:11 Ishtar~ 阅读(119) 评论(0) 推荐(0)
摘要:传送门【题目分析】RT,就是线段树的模板,支持区间乘、区间加、区间求和。很有意思的一点是两个标记的下传,解决了就行了。然后这道题,作为AHOI,竟然是个裸的模板!(可能年份久远的原因吧。。。)两个一毛一样嘛!【代码~】#includeusing namespace s... 阅读全文
posted @ 2018-10-25 10:53 Ishtar~ 阅读(201) 评论(0) 推荐(0)
摘要:QAQ【题目分析】思路妙妙妙啊。现在我们有q个叶子节点,权值为1的线段树,对于每次1操作,相当于将第i个叶子节点的值改为val,每次2操作就是将之前某叶节点权值改为1,最后输出根节点的权值即可。其实还算比较氵的题了。。。。【代码~】#includeusing name... 阅读全文
posted @ 2018-10-23 21:30 Ishtar~ 阅读(132) 评论(0) 推荐(0)
摘要:QAQ【题目分析】一道裸的剖分被一个极度sb的错误卡了两天。。。。。。题意很明显,维护5个操作:单点修改,区间取相反数,区间求和,区间求最大值,区间求最小值。因为求一条路径,考虑树链剖分维护(注意dfs序时优先dfs重儿子!!!这样在线段树上的编号才连续!!!)考虑第... 阅读全文
posted @ 2018-10-23 21:01 Ishtar~ 阅读(161) 评论(0) 推荐(0)
摘要:写在前面感谢ldx大佬的讲解!先%为敬!这篇博客主要记录的是一些线段树的例题,记住线段树的核心:标记的下放和信息的合并。高级操作走一波(打星号的贼难啊)(好吧这是基本操作)线段树支持区间加、区间乘、区间求和线段树维护区间开方和区间求和(*)线段树维护区间加、区间求和、... 阅读全文
posted @ 2018-10-22 21:13 Ishtar~ 阅读(124) 评论(0) 推荐(0)
摘要:嗒嗒嗒嗒嗒嗒【题目分析】题意。。。很明显看出要维护区间子序列最大值,那么问题就在于如何在区间合并的时候更新区间子序列最大值。可以推出,区间子序列最大值要么是从最左边开始的一段,要么是最右边向左的一段,要么是中间的一段,对于第一种,我们发现要么是左儿子最左边的一段,要么... 阅读全文
posted @ 2018-10-19 19:17 Ishtar~ 阅读(151) 评论(0) 推荐(0)