
线段树
文章平均质量分 82
维护区间信息的东东
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【PR #2】史莱姆(值域分段)
首先看单次询问我们怎么做。对于一个人,他的最优策略显然是不断吃最小的,并看最后能不能吃完。假设我们把区间内的数排好序了,设为 a1≤a2≤⋯≤ana_1\leq a_2\leq \cdots\leq a_na1≤a2≤⋯≤an。对于一个 uuu,它能吃完所有的人当且仅当:∀i<u,au+∑j=1i−1aj−ai≥k∀i>u,∑j=1i−1aj−ai≥k\begin{aligned}\forall i<u,a_u+\sum_{j=1}^{i-1}a_j-a_i\geq k\\原创 2022-04-11 13:20:03 · 198 阅读 · 0 评论 -
【NOI2018】你的名字(后缀自动机,线段树合并)
题意:给定一个字符串 SSS,qqq 次询问 T,l,rT,l,rT,l,r,求 TTT 和 S[l,r]S[l,r]S[l,r] 的本质不同公共子串数目。∣S∣≤5×105|S|\leq 5\times 10^5∣S∣≤5×105,q≤105q\leq 10^5q≤105,∑∣T∣≤106\sum |T|\leq 10^6∑∣T∣≤106。题解:首先看一个弱化版的问题:给出两个串 S,TS,TS,T,求 S,TS,TS,T 的本质不同公共子串数目。由于要求本质不同,所以思路是建出 TTT 的后缀原创 2022-03-02 12:41:12 · 414 阅读 · 0 评论 -
【XSY3551】Inserting Lines(线段树)
题意:数轴上有无穷个格子,每个坐标上各有一个格子,你需要支持以下操作共 nnn 次:在 x=kx=kx=k 这个格子前插入一个格子,并将所有 x≥kx\geq kx≥k 的格子后移一位。时间++。询问当前 x=kx=kx=k 这个格子在时刻 timtimtim 的坐标。n≤5×105,x≤109n\leq 5\times 10^5,x\leq 10^9n≤5×105,x≤109。推了一会好像不能用可持久化的东西维护,可能是我姿势有问题。普通的树套树是外层平衡树维护坐标维度,内层动态开点线段树维原创 2022-01-14 07:26:02 · 140 阅读 · 0 评论 -
【XSY3549】Tree(线段树,换根)
原题不想说(太懒了),就说一下总结到的两点想法?对于树上多次询问路径信息的问题,如果两条路径的信息无法快速合并(即不能 pushup),但是在路径两端增加/删除单点后的信息变化可以快速得出,可以试一下能不能用询问离线+类似换根 DP 的方法维护:钦定当前根为路径一端,使用数据结构维护以每个点作为路径另一端的答案。先钦定 111 为根,暴力求出 111 为路径一端时所有路径的答案,然后 dfs 换根,换根时考虑对答案造成的影响,在数据结构上修改。对于多次询问某个区间 [L,R][L,R][L,R] 的所原创 2022-01-04 16:58:41 · 537 阅读 · 0 评论 -
【HNOI2016】序列(线段树)
题意扩展版:有两个长度为 nnn 的序列 a,ba,ba,b,你需要维护 mmm 次操作:对 aaa 区间赋值。给定 l,rl,rl,r,对于所有 i∈[l,r]i\in[l,r]i∈[l,r],执行 bi←bi+aib_i\gets b_i+a_ibi←bi+ai。询问区间 bbb 的和。题解:感觉整篇题解都有点表达不清,但是我也不清楚应该怎样表达才好。考虑使用线段树,发现操作一和操作二的懒标记是不好合并的,因为会出现两个操作二中间夹着一个操作一的情况。但我们可以这样:进行操作一时原创 2021-12-30 19:16:48 · 429 阅读 · 0 评论 -
【HEOI2016/TJOI2016】排序(线段树分裂&合并)
线段树分裂&合并入门题。对于每个单调段用一个权值线段树维护。一次操作相当于先对 l,rl,rl,r 所在的单调段的权值线段树分裂,然后再合并若干棵的权值线段树。线段树分裂和 fhq-treap 的分裂类似,只不过根到分裂成的两部分的 lcalcalca 的那一段路径要复制一遍。线段树分裂&合并的时间复杂度分析:分裂一定单次是 O(logn)O(\log n)O(logn) 的,现在考虑合并的时间复杂度。一开始有 O(nlogn)O(n\log n)O(nlogn) 个节点,分裂的过原创 2021-12-26 20:08:19 · 568 阅读 · 0 评论 -
【XSY3490】线段树(广义线段树,树上莫队)
题面线段树题解本题分两 Part 走。Part 1我们需要解决: 如何在广义线段树上快速区间定位节点。对于有 nnn 个叶子节点、共 2n−12n-12n−1 个节点的广义线段树 AAA,我们定义 maxrlmaxr_lmaxrl 表示 AAA 中所有以 lll 为左端点的区间的右端点的最大值,minlrminl_rminlr 为 AAA 中所有以 rrr 为右端点的区间的左端点的最小值。然后再定义 LLL 树和 RRR 树,LLL 树中点 lll 对应 AAA 树中的点 [l,maxrl]原创 2021-12-25 17:52:53 · 1044 阅读 · 1 评论 -
【XSY3478】取石子(经典问题)
题面取石子题解只考虑一方,每一个操作都可以写成 x←max(0,min(S,x+Bi))x\gets \max(0,\min(S,x+B_i))x←max(0,min(S,x+Bi)) 的形式。法一:定义 “碰壁” 表示当前 x←max(0,min(S,x+Bi))x\gets \max(0,\min(S,x+B_i))x←max(0,min(S,x+Bi)) 操作中对 000 取 max\maxmax 和对 SSS 取 min\minmin 之一起了作用(即 x+Bix+B_ix原创 2021-12-12 12:32:20 · 2153 阅读 · 0 评论 -
【P4314】CPU监控(线段树维护区间历史信息)
线段树维护区间历史信息的模板题。看了 cmd 的博客。大概思路是:由于我们需要求出历史信息,所以暴力的做法是在做区间修改时的 tag 我们先不合并,而是按时间顺序存一个 tag 队列,然后考虑新增加一个 tag 队列时对历史信息的影响,然后再考虑我们只需要记录 tag 队列和当前的哪些信息就能维护这个影响了,从而优化到不需要记录队列。比如本题,有两种 tag:区间赋值和区间加。需要维护的信息是区间最值。一个比较巧妙的地方是可以把区间赋值后的区间加都看成区间赋值,于是 tag 队列是一段区间加,后面跟一原创 2021-11-22 19:17:58 · 315 阅读 · 0 评论 -
【P4198】楼房重建(线段树维护前缀最值)
线段树维护前缀最值相关的模板题。关键思想在于合并,[l,mid][l,mid][l,mid] 的前缀最值仍然是 [l,r][l,r][l,r] 的前缀最值,而 (mid,r](mid,r](mid,r] 中只有 ≥mxl\geq mx_l≥mxl 的前缀最值才是 [l,r][l,r][l,r] 的前缀最值。而前缀最值是单调的,于是可以对于 (mid,r](mid,r](mid,r] 在线段树上二分,统计 ≥mxl\geq mx_l≥mxl 的前缀最值的信息和。当信息具有可减性时,直接按原来的方法记原创 2021-11-22 17:44:41 · 233 阅读 · 0 评论 -
【XSY2506】bipartite(动态维护二分图,线段树,可撤销并查集)
感觉非常神奇,但大家都说非常套路/kk把所有操作离线下来,我们以时间为下标建线段树,对于一条边,我们把它加入到它出现的时间区间内去。我们在线段树上 dfs,每次到达一个节点的时候加边,到达叶子节点的时候输出,回溯的时候撤销(这就是这样做的好处,我们不需要删除,只需要撤销)。而只有加边和撤销操作的二分图是好维护的:使用可撤销并查集。每次加入一条边时,若两个端点不连通,那么将两个并查集连起来,其中可能需要对一个并查集整体反色,在根上打 tag 即可;若两个端点连通,假如同色则标记答案为 NO,假如不同色则原创 2021-10-29 15:51:32 · 202 阅读 · 0 评论 -
【XSY2815】净空(贪心,线段树)
题目要求我们分解为 x=∏i=1m(ci!)ti⋅px=\prod_{i=1}^m(c_i!)^{t_i}\cdot px=∏i=1m(ci!)ti⋅p,那么显然 cic_ici 不可能大于等于 105+310^5+3105+3(为质数),否则 ci!c_i!ci! 就会包括这个质数,而 xxx 不可能包含这个质因子。那么肯定是枚举 NNN 从 105+210^5+2105+2 到 222,过程中不断贪心地试除 N!N!N!。先对 x=∏i=1nai!x=\prod_{i=1}^n a_i!x原创 2021-10-28 17:04:47 · 136 阅读 · 0 评论 -
【XSY3434】【UOJ431】time map(线段树维护位运算)
首先注意到一个性质:如果我们把权值相同且相邻的点归为一个连通块的话,那么一个叶子节点往上会经过至多 O(logV)O(\log V)O(logV) 个连通块(因为父亲节点一定是儿子节点的子集)。又注意到属于同一个连通块内的点,走的方向都是一样的。那么如果我们能动态维护点的权值,询问从某个点开始走时,假设它会往左走(那么在它所属的连通块内它就一直会往左走),那么我们可以二分出它往左走一直会走到哪(显然这段路上每个点的权值都是相同的,也就是说我们只需要算出这段路的长度即可知道这段路对答案的贡献),然后再跳原创 2021-10-14 08:17:47 · 179 阅读 · 0 评论 -
【XSY3404】猴戏世家
法一:题解做法。不太好想。动态维护不太好做,我们考虑先把栅栏最后长什么样维护出来。扫描线,按 xxx 从大到小扫描,过程中维护当前扫描线上的一些区间,每一个区间内的点同属于一个栅栏,然后扫描到一个栅栏的时候找到它下面的第一个区间:如果这个区间对应的栅栏出现时间比当前栅栏晚,那么之后这个区间会属于当前栅栏,那么合并当前栅栏的区间和这个区间,并继续往下找;如果这个区间对应的栅栏出现时间比当前栅栏早,那么当前栅栏延伸到这个区间时就会被挡住了。于是我们就能求出最后每一个点属于哪一个栅栏,维护区间可以用 se原创 2021-10-11 21:55:41 · 122 阅读 · 0 评论 -
【XSY3367】青春野狼不做姐控偶像的梦(线段树)
题意:给一个 1∼n1\sim n1∼n 的排列,多次询问某段区间内的值域连续子区间的个数。区间值域连续的另一种表达方式:max−min=r−lmax-min=r-lmax−min=r−l,即 (max−min)−(r−l)=0(max-min)-(r-l)=0(max−min)−(r−l)=0。考虑 l=1,r=nl=1,r=nl=1,r=n 怎么做,我们对 rrr 进行扫描线,维护有多少个 lll 满足 (max−min)−(r−l)=0(max-min)-(r-l)=0(max−min)−(r−l原创 2021-10-04 17:00:16 · 142 阅读 · 0 评论 -
【XSY4191】sequence(分块,线段树)
题面sequence题解考虑把原序列每 kkk 位分成一段,然后对于每一段维护起点在这一段中的最小值。先考虑询问,对于起点在中间的整段我们直接线段树查区间最小值,现在考虑两边的小段。以左边的小段为例:(不妨假设它在第一段,在其他段是相同的)如图,红框内是我们起点的可选区域,那么蓝框内就是我们终点的选择区域。起点为 iii 的答案为 max(Ai,⋯ ,Ai+k−1)\max(A_i,\cdots,A_{i+k-1})max(Ai,⋯,Ai+k−1),它可以分为三段:红阴影、绿阴影、蓝阴影原创 2021-10-01 21:53:11 · 152 阅读 · 0 评论 -
【XSY3326】米缸(时间复杂度均衡,线段树,基环树,倍增)
时间复杂度的均衡。先考虑暴力的想法:显然这是一棵基环树,那么我们每次修改时暴力 O(nm)O(nm)O(nm) 重构基环树,然后询问的时候就能 O(1)O(1)O(1) 查询。时间复杂度 O(nmq)O(nmq)O(nmq)。考虑均衡时间复杂度,我们考虑只记录第一列的每个点 iii 走 mmm 步之后会绕回第一列的哪个点,设为 FiF_iFi。那么这棵基环树的大小就是 nnn 了。然后询问的时候只需要先 O(m)O(m)O(m) 暴力走到第一列再直接 O(1)O(1)O(1) 在基环树上走然后再 O(原创 2021-09-09 14:12:10 · 112 阅读 · 0 评论 -
【XSY2501】Mountainous landscape(线段树二分,凸包)
先考虑如何确定对于某个 iii 的答案。题目的要求是:对于每一个 i=1,2,⋯ ,n−1i=1,2,\cdots,n-1i=1,2,⋯,n−1,找一个最小的 jjj 使得 j>ij>ij>i 且线段 PjPj+1P_jP_{j+1}PjPj+1(含端点)与将射线 PiPi+1P_iP_{i+1}PiPi+1 略向上平移后所得的射线相交。这个要求可以转化为:拟一条射线 PiPi+1P_iP_{i+1}PiPi+1,找到最小的 jjj 使得 PjP_jPj 在这条射线上方(原创 2021-08-06 20:03:28 · 157 阅读 · 0 评论 -
【THUWC2020】Day2T2(dfs树,DP,线段树合并)
对于每一个点 uuu,我们先找到满足右述条件的深度最小的 uuu 祖先 fff 并记这个深度最小的祖先的深度为 dp(u)dp(u)dp(u):fff 能只通过除了树上 [f,u][f,u][f,u] 路径所包含的边之外的边到达 uuu。那么显然,一次询问 [a,b][a,b][a,b] 中,对于 bbb 的子树中的一点 uuu,111 号点能到达 uuu 当且仅当 minv∈[b,u]dp(v)≤dep(a)\min\limits_{v\in[b,u]} dp(v)\leq dep(a)v∈[b,u]原创 2021-08-03 20:45:56 · 322 阅读 · 0 评论 -
【bzoj4869】【六省联考2017】相逢是问候(扩展欧拉函数)
和《花神游历各国》有异曲同工之妙。首先能想到扩展欧拉定理:ab≡{ab mod φ(p)+φ(p)if b≥φ(p)abif b<φ(p)(modp)a^b\equiv\begin{cases}a^{b\bmod \varphi(p)+\varphi(p)}&\text{if }b\geq\varphi(p)\\a^b&\text{if }b< \varphi(p)\end{cases}\pmod pab≡{abmodφ(p)+φ(p)ab原创 2021-07-17 12:53:18 · 104 阅读 · 0 评论 -
【XSY3938】平方问题(线段树)
题面平方问题题解记 p=998244353p=998244353p=998244353,那么 ap−1≡1(modp)a^{p-1}\equiv 1\pmod pap−1≡1(modp)。(gcd(a,p)=1\gcd(a,p)=1gcd(a,p)=1)那么 ab≡ab mod (p−1)(modp)a^b\equiv a^{b\bmod (p-1)}\pmod pab≡abmod(p−1)(modp)。题目的操作相当于每次把一个数的指数乘上 222,那么每个数都能表示成 a2xa^{2^x}a原创 2021-07-15 15:07:41 · 226 阅读 · 0 评论 -
【XSY4041】搬砖(线段树)
题面搬砖题解题意为求最大的 ppp 使得 h1≡h2≡⋯≡hn(modp)h_1\equiv h_2\equiv \cdots\equiv h_n\pmod ph1≡h2≡⋯≡hn(modp)。即 h2−h1≡h3−h2≡⋯≡hn−hn−1≡0(modp)h_2-h_1\equiv h_3-h_2\equiv \cdots\equiv h_n-h_{n-1}\equiv 0\pmod ph2−h1≡h3−h2≡⋯≡hn−hn−1≡0(modp)。那么我们可以得到 p∣gcd(h原创 2021-06-01 14:06:36 · 138 阅读 · 0 评论 -
【XSY3921】简单的数据结构题(多项式,拉格朗日插值,线段树)
题面简单的数据结构题题解直接考虑我们要计算的式子。为了方便,我们先设 l=1,r=nl=1,r=nl=1,r=n。∑i=1naik∏j≠i1−aiajai−aj=∑i=1naik(∏j≠i1ai−aj)(∑l=0n−1∑1≤j1<j2<⋯<jl≤nj1,j2,⋯ ,jl≠i(−aiaj1)(−aiaj2)⋯(−aiajl))=∑i=1naik(∏j≠i1ai−aj)(∑l=0n−1ail[xn−1−l](∏j≠i(x−aj)))=∑l=0n−1[xn−1−1](∑i=1naik+l原创 2021-03-19 19:33:24 · 143 阅读 · 0 评论 -
【XSY3813】漏网之鱼(线段树)
题面漏网之鱼题解为了方便表述,不妨设 mex(l,r)mex(l,r)mex(l,r) 表示 mex(a[l],a[l+1],⋯ ,a[r])mex(a[l],a[l+1],\cdots,a[r])mex(a[l],a[l+1],⋯,a[r])。首先,对于权值大于 n+1n+1n+1 的 a[i]a[i]a[i],我们直接把它设为 n+1n+1n+1 就行了,因为 mexmexmex 肯定不会大于 nnn。然后 O(n)O(n)O(n) 预处理出 nxtinxt_inxti 表示 aia_iai原创 2021-03-17 08:12:20 · 376 阅读 · 1 评论 -
【XSY3961】决战圣诞树(dfn序线段树,多项式,生成函数)
题面决战圣诞树题解设 aia_iai 表示最终满意指数为 iii 的方案数,我们考虑求出 aia_iai 的生成函数。那么树上每个点都要维护一个多项式,表示仅对于这个点的 aia_iai 的生成函数。那么题目就可以看成支持以下几个操作:给定 v,av,av,a,将节点 vvv 的多项式乘上 (1+xa)(1+x^a)(1+xa)。给定 v,b,cv,b,cv,b,c,将节点 vvv 的多项式乘上 (1+xa+xb)(1+x^a+x^b)(1+xa+xb)。给定 vvv,将与原创 2021-03-12 14:51:36 · 305 阅读 · 0 评论 -
【XSY3949】取石子游戏(博弈,线段树)
我们把一个有 nnn 个石子, Alice 每次能拿 aaa 个, Bob 每次能拿 bbb 个的堆称为状态 (n,a,b)(n,a,b)(n,a,b)。石子数太大的时候不利于分析,尝试简化一下:可以证明状态 (n,a,b)(n,a,b)(n,a,b) 的结果同 (n mod (a+b),a,b)(n\bmod (a+b),a,b)(nmod(a+b),a,b) 状态的结果相同。所以我们只需对每一个 n←n mod (a+b)n\gets n\bmod(a+b)n←nmod(a+b),然后只考虑 n&l原创 2021-03-07 09:58:08 · 228 阅读 · 0 评论 -
【CF464E】The Classic Problem(主席树优化高精,dijkstra)
题目也没有给出什么很特殊的性质,所以考虑能不能高精度最短路。dijkstra 中涉及的运算主要是两个:加法和比较大小。注意到题目给出的边权是 2k2^k2k 的形式,我们不如直接用二进制表示每一个数。而比较大小的实质是从高到低找到第一个不相等的位,这个我们可以用哈希+二分实现。发现加法并不是两个大数相加,而是一个大数 xxx 加上一个 2m2^m2m(代码中的具体体现是 dis[u]+w[i]),这样做的是实质是从 xxx 的第 mmm 位开始找到最长的一段 111,并把这一段 111 置为 000原创 2021-01-25 20:16:24 · 186 阅读 · 1 评论 -
【XSY3810】公路建设(线段树,kruskal)
题面题解一开始竟然没反应过来是最小生成树。考虑用线段树直接维护每个区间的答案。注意到一个区间最多只有 n−1n-1n−1 条树边有用,所以线段树每个节点用一个 vector按权值从小到大保存区间内用到的树边即可。合并两个区间的信息时,只需要将两棵子树存的树边归并排序,然后做 Kruskal 算法。时间复杂度 O((m+qlogm)nα(n))O\big((m+q\log m)n\alpha(n)\big)O((m+qlogm)nα(n))。#include<bits/stdc++.h原创 2021-01-09 21:00:49 · 141 阅读 · 0 评论 -
【XSY2423】跳蚤(根号分治)
题面题解神奇的分类讨论。首先注意到每次所有跳蚤都只会往右跳,也就是说只要某一只跳蚤跳出了 max(ri)\max(r_i)max(ri) 它就不会再有贡献了。(和 火神的鱼 类似)令 R=max(ri)R=\max(r_i)R=max(ri)。考虑根号分治,将所有的跳蚤分成两类:将 ti>Rt_i> \sqrt{R}ti>R 的分为第一类,将 ti≤Rt_i\leq \sqrt{R}ti≤R 的分为第二类。对于第一类,我们暴力维护这些鱼的位置,因为他们原创 2020-11-25 18:24:59 · 193 阅读 · 0 评论 -
【ARC069F】Flags(2-SAT,Tarjan,线段树优化建图)
首先先二分答案。然后判断能否使得两两旗子之间的距离都大于 midmidmid。然后发现这是一个 2-SAT 问题。2-SAT 问题:通俗地说,有 nnn 个 bool 变量 aia_iai,并给出一些形如 ai⊕aj=0/1a_i\oplus a_j=0/1ai⊕aj=0/1 的条件(其中 ⊕\oplus⊕ 可以是 and\operatorname{and}and、or\operatorname{or}or 或 xor\operatorname{xor}xor),然后询问满足这组方程的一组原创 2020-10-03 16:30:31 · 294 阅读 · 0 评论 -
【SCOI2016】美味(主席树,贪心)
看到异或最大,第一反应是用 01trie 做。但是 01trie 不能实现区间加法,所以不好做。看回题目,从最简单的思路去想:设 ansansans 能使得 ans xor bans\ \operatorname{xor}\ bans xor b 最大。每次将 bbb 二进制拆分,设二进制下 bbb 的第 iii 位为 bib_ibi(第 000 位为最低位),ansansans 的第 iii 位为 ansians_iansi。然后我们贪心地从高位往低位原创 2020-08-26 11:35:15 · 197 阅读 · 0 评论 -
【BZOJ4504】K个串(优先队列,可持久化线段树)
Description兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第k大的和是多少。Input第一行,两个整数n和k,分别表示长度为n的数字序列和想要统计的第k大的和接下里一行n个数a_i,表示这个数字序列Output一行一个整数,表示第k大的和设 f(i,j)f(i,j)f(i,j) 表示以 iii.原创 2020-07-29 20:09:37 · 391 阅读 · 0 评论 -
[NOI Online 2020 #2 提高 B] 子序列问题 (dp+线段树)
真的是事后诸葛亮,一下考场就知道怎么做了,现在把题解补回来看到这个问题,我第一下想到的就是 dpdpdp。如何 dpdpdp?设 dp[i]dp[i]dp[i] 为以 iii 为右端点的所有子串的答案之和,那么最后要输出的答案就是 ans=∑i=1ndp[i]ans=\sum_{i=1}^{n}dp[i]ans=∑i=1ndp[i]。至于怎么维护这个 dp[i]dp[i]dp[i],我一...原创 2020-05-02 22:05:03 · 221 阅读 · 0 评论 -
【BZOJ3123】【SDOI2013】【XSY1660】森林(启发式合并,主席树)
综合性比较强的一道题。据说有LCTLCTLCT+主席树的毒瘤做法,我也不知道这群人码这个东西的信心从哪来 但人家到底是码出来了对于询问,我们考虑用主席树实现。关键是怎么建才能维护一条路径上的。对于原树中的节点uuu,我们在权值线段树中维护的是从根到uuu的所有点的点权。那么对于uuu到vvv的路径上的点,我们先计算出lca(u,v)lca(u,v)lca(u,v)以及fa[lca]fa[...原创 2019-12-28 10:57:51 · 162 阅读 · 0 评论 -
【BZOJ2212】【POI2011】【XSY2014】Tree Rotation(线段树合并)
输入格式真的毒瘤权值线段树合并。我们先对每一个叶子建一棵权值线段树,并把它自己的权值插入到里面。我们不妨设原树中当前节点为 uuu,爸爸 fafafa,左儿子 lclclc,右儿子 rcrcrc,那么显然这棵树中的逆序对分为 333 个部分:lclclc 里的逆序对,rcrcrc 里的逆序对和跨 lclclc 和 rcrcrc 的逆序对。而我们现在已经把 lclclc 里的逆序对和 rcr...原创 2019-12-28 10:11:46 · 163 阅读 · 0 评论 -
【loj6092】【雅礼集训 2017 Day1】市场(线段树)
操作1、3、4都是常规操作,我就不讲了。然后我们考虑怎么处理区间除法。首先容易想到对于一个数xxx,它除一次最少除222,那么它最多除log2(x)log_2(x)log2(x)次就会变成0 or 10\ or\ 10 or 1。但是会有区间加法,所以这个东东不可以搞。于是我们注意到一个性质:如果:x−⌊xd⌋=z−⌊zd⌋x-\lfloor\...原创 2019-11-02 11:54:05 · 175 阅读 · 0 评论 -
【XSY2569】火神的鱼(线段树+树状数组)
题面Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。他对池塘里的每条鱼都给予了一个标号,分别从111到nnn标号,nnn表示池塘里鱼...原创 2019-09-03 13:52:00 · 358 阅读 · 0 评论 -
【XSY2538】/【HDU6155】Subsequence Count(矩阵乘法+线段树)
题目翻译Description给定一个010101串 S1...nS_{1...n}S1...n 和 QQQ 个操作。操作有两种类型:1、将 [l,r][l,r][l,r] 区间的数取反(将其中的000变成111,111变成000)。2、询问字符串 SSS 的子串 Sl...rS_{l...r}Sl...r 有多少个不同的子序列。由于答案可能很大,请将答案对 109+710^9+71...原创 2019-08-20 15:02:27 · 250 阅读 · 0 评论