随笔分类 -  数据结构-分块

摘要:题意 n(n≤105)个洞排成一条直线,第ii个洞有力量值ai,当一个球掉进洞ii时就会被立刻弹到i+ai,直到超出n。进行m(m≤105)次操作: ·修改第i个洞的力量值ai。 ·在洞xx上放一个球,问该球几次后被哪个洞弹飞出界。 思路 分块暴力,每个块内维护两个信息(块内DP可以求出): ①从当 阅读全文
posted @ 2020-01-09 11:49 overrate_wsj 阅读(286) 评论(0) 推荐(0)
摘要:题意: 给你一段序列,并且有两种操作 操作①:将序列中从l-r每个元素加上x 操作②:在序列中找到ai=aj=y,j-i的最大值,如果找不到则输出-1 思路: 直接分块暴力即可 对于区间加,普通标记加暴力即可 对于找最大值,直接在每个块中二分找y,找不到即为-1 #include<iostream> 阅读全文
posted @ 2020-01-08 23:11 overrate_wsj 阅读(191) 评论(0) 推荐(0)
摘要:题意 给你一段长度为n(1 ≤ n ≤ 3·1e5)的序列,m (1 ≤ p ≤ 3·1e5)个询问,每次询问a,a+b,a+2b+...<=n的和 思路 一开始一直想也想不到怎么分,去维护哪些信息,看了题解才知道 其实分块不仅仅可以将一列序列分块,还可以将数据进行分块,下面讨论具体做法 首先这道题 阅读全文
posted @ 2020-01-08 21:46 overrate_wsj 阅读(147) 评论(0) 推荐(0)
摘要:题意 长度为n的坐标轴上,从1-n上的每一点都有一栋楼房,楼房的初识高度都为0,每一天都有一栋楼房的高度被修改(也可以不变),一栋楼房能被看见当且仅当其最高点与远点的连线不会与其他之前连线相交,问你每天能看见的楼房数是多少。 思路 其实这道题也可以用线段树做,但是感觉更复杂。预处理首先我们还是将整个 阅读全文
posted @ 2020-01-08 21:45 overrate_wsj 阅读(158) 评论(0) 推荐(0)