线段树
文章平均质量分 67
Jozky86
这个作者很懒,什么都没留下…
展开
-
cf1208E. Let Them Slide
cf1208E. Let Them Slide题意:都放在一个长度为W的框里面。有n个序到,第i个序列的长度是1。这些序到并排放在一起,每一个序列都放在一个长度为w的框里这些序列可以在框里面滑动,但是不能划出框。对于每一个位置,你需要求出怎样滑动可以使得这一个位置上的数的和最大序到总长度不超过106,−109≤ai≤10910^6,-10^9≤ai≤10^9106,−109≤ai≤109题解:我一开始想法,对于每个位置的数,考虑其会被哪些框内的数所影响,比如第i个数,看框内通过移动哪个区间可以原创 2021-10-23 15:12:16 · 146 阅读 · 0 评论 -
CF1208D Restore Permutation
CF1208D Restore Permutation题意:现在有一个从1到n的一个全排列,但是你不知道这个排列到底是什么,但是你有一个sum[i],其中sum[i]表示∑j=1i−1(aj<ai)?aj:0∑_{j=1}^{i−1}(a_j<a_i)?a_j:0∑j=1i−1(aj<ai)?aj:0,现在给你sum数组,让你求出这个排列a题解:如果sum[i]为0,说明在位置i前面的所有数都比他大,因为排列a是1到n的全排列,也就是说对于数字1来说,其sum[i]一定为0原创 2021-10-23 11:38:07 · 158 阅读 · 0 评论 -
cf1557D. Ezzat and Grid
cf1557D. Ezzat and Grid题意:有n行,每行有10910^9109列,仅仅由0和1构成现在给你1的存在位置,(i,l,r)表示第i行的第l列到第r列全为1你可以删除任意一行i,删除后,第i-1行和第i+1行为相邻现在我们要求求最多的行数,使得每个相邻两行最少有一列都是1(可以理解成上下相邻1),并输出删除了哪些行题解:对于i行,我们考虑前i-1行个是与i行满足要求的(即存在相邻1)。我们用线段树维护一个pair<int,int>sumsum.first表示以i原创 2021-08-23 17:11:21 · 234 阅读 · 2 评论 -
cf1555 E. Boring Segments
cf1555 E. Boring Segments题意:给你n个线段,最大点是m,每一个线段有一个权值w,你能选择线段来覆盖1-m这个区间的,选择的代价为最大权值和最小权值的差。问你最小的的代价是多少。题解:尺取+线段树我们尺取的选择线段,然后用线段树来判断此时区间是否被完全覆盖,如何判断呢?我们可以认为一开始整个线段树都是0,每加入一个线段,这个区间的值+1,当tr[1].sum!=0时,即所有点都被覆盖。注意:本题中的覆盖是覆盖所有边,比如线段[1,5]和线段[6,10]并没有将[1,10]原创 2021-08-18 15:32:04 · 181 阅读 · 0 评论 -
Picture POJ - 1177(矩形周长并))
Picture POJ - 1177题目:多个矩阵相交在一起,问新图形的周长是多少题解:参考题解周长分为两部分:横线和竖线横线计算方法:现在总区间被覆盖的长度和上一次总区间被覆盖的长度之差的绝对值那么我们只需要从上往下,再从左往右扫描两次即可但是这样需要两次,有没有更简化的方法:现在我们打算一次自上而下的扫描把横线竖线都算出来横线的算法和上面说的方法一样:现在这次总区间被覆盖的长度和上一次总区间被覆盖的长度之差的绝对值我们用线段树来记录一些信息:l,r :该节点代表的线段的左右原创 2021-08-15 21:23:03 · 270 阅读 · 0 评论 -
约会安排 HDU - 4553
约会安排 HDU - 4553题意:题意又丑又长就不叙述了题解:这个题一开始理解错了。。。题目相当于是有三种情况占据时间,分别是学习,女神和屌丝,我们用不同的lazy来表示女神和屌丝,根据优先级去更新状态。学习pushdown时会讲女神和屌丝的lazy清空,女神会把屌丝的清空。相同类型所占区间要进行合并。但是要注意:学习时间可以被后面任意在为屌丝安排时顺序安排时间为女神安排时,先看屌丝是否有空余时间,如果没有直接无视屌丝(因为可以占用屌丝时间),直接判断女神时间是否有连续x长的空余时间ls原创 2021-08-15 17:45:59 · 188 阅读 · 0 评论 -
D - Counting Stars HDU - 7059
D - Counting Stars HDU - 7059题解:长度为n的序列a,有三个操作:对某个区间进行询问对于某个区间内的每个数ai,减去ai&(-ai)对于某个区间内的每个数ai,加上2k2^k2k,k满足2k<=ai<2k+12^k <= a_{i} <2^{k+1}2k<=ai<2k+1题解:很容易想到线段树维护,但是后两个操作都不是线段树的基础操作对于第二个操作,如何维护,其实线段树问题中经常遇到,对于这种数值快速递降至稳定的函原创 2021-08-13 14:13:32 · 149 阅读 · 0 评论 -
P2572 [SCOI2010]序列操作
P2572 [SCOI2010]序列操作题意:一个长度为n的01序列,下标从0开始,现在有五种变换操作和询问操作:0 l r 把[l,r]区间内的所有数全变成01 l r 把[l,r]区间内的所有数全变成12 l r把[l,]区间内所有数全部取反3 l r询问[l,r]区间内总共有多少个14 l r询问[l,r]区间内最多有多少连续的1题解:参考题解很明显,裸的线段树,但是很难写。。线段树要维护以下信息:sum:区间内1的个数maxx[0/1]区间内0/1最长连续子段lma原创 2021-08-11 14:42:37 · 252 阅读 · 0 评论 -
[SDOI2014]旅行
[SDOI2014]旅行题意:n个城市,n-1条边,任意两个城市互通,每个城市有所信奉的宗教和城市评级,有四种指令:1.将城市x的居民改信为c教2.将城市x的评级调整为w3.统计x到y,路上所有的城市的评级综合(被记录的城市宗教必须与x和y相同,数据保证x和y宗教一致)4.统计x到y,路上的评级最大值(被记录的城市要求与上述一样)按照要求输出答案题解:参考文章为洛谷题解的第一篇(文章好像显示不可查看洛谷的题解第一页题目比较麻烦,因为有两个要维护的量,如果是一个还好说,对于树上维护那肯定原创 2021-04-25 21:32:27 · 206 阅读 · 0 评论 -
Lawn of the Dead
Lawn of the Dead题意:有一个N * M的方格,我们从(1,1)出发,只能向右走或者向下走,存在一些障碍,问有多少格子是我们所能到达的2<=n,m,k<=1e5题解:所有的点减去不能到达的点的个数,就是可以到达的点的个数有障碍的地方不能达到,而我们只能向右向下走,当某个点的左边和上边都是不可达时,该点就不可达,并会对自己的右边的点和下方的点造成影响n,m,k<=1e5,空间很大但是地雷数目有限,我们可以从上往下逐行对每一行的地雷排序后处理,对于每个地雷,找到从自原创 2021-07-29 20:58:33 · 380 阅读 · 2 评论 -
CF 1529E. Trees of Tranquillity
CF 1529E. Trees of Tranquillity文章目录题意:题解:代码:线段树代码:利用set实现题意:有A1,A2两棵树,根是1,编号都是1~n,先制作图A3,如果两个点的x和y同时满足以下两个条件则连边,1.在树A中x是y的祖先或者y是x的祖先2.在树B中x和y谁都不是谁的祖先求A3的最大的团集的大小团:图G的一个完全子图题目A1和A2的输入方式为:a2,a3…an, ai是树的顶点i的父亲节点(1<= ai <i)题解:参考题解:文章1文章2我原创 2021-07-13 17:57:15 · 177 阅读 · 0 评论 -
Joy of Handcraft Gym - 102822J(线段树或差分)
Joy of Handcraft Gym - 102822J题意:每个灯有亮的周期和亮度,问1~m这段时间灯光最亮是多少题解:线段树维护区间最大值根据灯的周期向这段区间加亮度k,然后利用线段树维护区间最大值但是这样会超时,加个小优化就ac了(670ms)我们考虑,因为题目只要求最亮的一段,而且所有灯亮的时间起点是一样的,也就是如果两个灯周期一样,只有亮度高的才会有用,所有我们将所有灯按照亮度排序,每加完一组灯,记录该周期,后面再出现该周期的就不用加了代码:#include<bits/原创 2021-07-09 16:03:52 · 228 阅读 · 0 评论 -
Vases and Flowers HDU - 4614
Vases and Flowers HDU - 4614题意:一排空瓶子放花,操作1:从第x个瓶子开始放花,放y朵花,每个瓶子就一朵花,如果碰到已经有花的瓶子跳过这个瓶子,看下一个,当花没了,或者瓶子不够了结束,输入第一个放花的瓶子和最后一个放花的瓶子,如果一朵花都没放进瓶子输出一行字符’Can not put any one.’,操作2:把x到y之间的花清空,输出清空花的数量题解:操作2好做,操作1的起点终点如何确定?我们可以直接二分确定,先二分确定左端点,然后利用左端点,再二分确定右端点。代码原创 2021-06-03 00:10:10 · 134 阅读 · 0 评论 -
Transformation HDU - 4578
Transformation HDU - 4578题意:选定一段连续区间[l,r],有三种操作:操作1:对区间内值+c操作2:对区间内值*c操作3:将区间内的值都改为c操作4:查询区间内每个数p次方的和p=1,2,3题解:参考题解加强版线段树,对于本题需要三个标记,add的加法标记,mul的乘法标记,alt的修改标记,因为p=1,2,3,所以我们用sum1,sum2,sum3分别表示一次方和,平方和,立方和然后我们要确定标记的优先级,alt第一,mul第二,add第三,pushdown原创 2021-06-02 11:09:22 · 76 阅读 · 0 评论