![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
线段树题集
9ack!?
在校苦逼男
展开
-
Luogu P3373: 线段树
大意就是有若干数组成的一个序列,有三种操作,一种是让一个区间内每个数字加上一个数;矛盾的地方实际上就是,我在添加一种标记的时候,需不需要处理另一种标记;对于一个节点k,f[k]代表区间和,madd[k]代表加法标记,mmul[k]代表乘法标记。来说多了一种标记,那我们要解决的主要问题就是如何来维护这两种标记。...原创 2022-07-30 09:51:37 · 114 阅读 · 1 评论 -
POJ-2777 Count Color [线段树+bitset]
题目 题目在这里 思路 一共不超过30种颜色,可以bitset数组替换线段树中的int数组。套线段树模版就行了。 代码 #include <cstdio> #include <algorithm> #include <bitset> using namespace std; const int maxn = 1e5+5; int L, T, O; bitset<32>tree[4*maxn], lz[4*maxn]; void buildtree(int原创 2022-03-22 22:26:07 · 149 阅读 · 0 评论 -
Luogu: P2574 XOR的艺术 [线段树]
题目给出一串01组成的字符串,有多种操作,可以对指定的区间的01进行翻转,也可以询问指定区间的01串中有多少个1。这道题也挺基本,相对上一个题来说只是多了一个维护标记的操作。原创 2022-08-01 17:21:34 · 65 阅读 · 0 评论 -
Luogu P4588: [TJOI2018]数学计算
每次操作后输出当前x对一个数字取模的值。这个问题乍一看挺简单,但是由于取模的数字不一定是质数,所以逆元也不能用了,暴力做法不行我们就思考一些巧妙的方法。通过时间当作下标来把这些m组织起来,再用线段树维护所有段的乘积,操作1就是把当前时间对应的值置为m,操作2就是把当前时间对应的值置为1。由于每次都需要精确递归到长度为1的段,所以标记也不需要打,直接开干。......原创 2022-08-01 10:11:18 · 103 阅读 · 0 评论 -
NC20164 :最大数MAXNUMBER [线段树]
第一行两个整数,M和D,其中M表示操作的个数(M ≤ 200,000),D如上文中所述,满足D在longint内。接下来M行,查询操作或者插入操作。其实就是线段树的模版题,因为数据量比较小,所以都用不到带标记的线段树模版,就注意一下每次插入的位置和查询时左右边界的问题吧。对于每一个询问操作,输出一行。该行只有一个数,即序列中最后L个数的最大数。注意:初始时数列是空的,没有一个数。...原创 2022-08-04 09:33:08 · 67 阅读 · 0 评论