摘要:
树链剖分,线段树维护~ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std; const int MAXN = 1001 阅读全文
摘要:
DFS遍历树,把时间轴投到线段树上,单点查询~ #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<string> using namespace std; const int maxn 阅读全文
摘要:
线段树保存每个区间的左边最大连续长度和右边最大连续长度~ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> using namespace std; const int 阅读全文
摘要:
有两种操作,一是给区间内所有的数开根号,二是区间求和。 线段树单点更新,区间求和的模板~ #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=1e6+14; struct n 阅读全文
摘要:
建两颗线段树分别存最大和最小值,模板题~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; struct node { int l; int r; in 阅读全文
摘要:
给出每一线段的颜色,存在颜色覆盖,要求最后能看到的每种颜色及其段数 线段树区间更新~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=10014; struct no 阅读全文
摘要:
给出两个字符串,询问有多少种反转方法可以使字符串1变成字符串2。 如果两个串相同,就用马拉车算法找回文串的数量~ 如果两个串不同,从前往后找第一个不同的位置l,从后往前找第二个不同的位置r,反转l和r,判断是否成功~ 如果不成功,记为0 如果成功,以l和r为起点判断是否能反转,记录次数 #inclu 阅读全文
摘要:
初始的时候,整个序列都是1,接下来,每次输入l,r,x。表示将l到r之间修改为x且x只会是1、2、3,最后问你序列总和。 线段树成段更新~ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; cons 阅读全文
摘要:
线段树+区间增量累加法lnc 区间更新,区间查询~ #include<cstdio> #include<algorithm> #include<iostream> using namespace std; typedef long long ll; const int maxn=1e6+14; st 阅读全文
摘要:
简单线段树,单点更新,区间查询,自下向上更新结点的信息~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; struct node { int l; i 阅读全文