我的模板类
文章平均质量分 63
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
prim算法和kruskal算法的简洁证明
文章目录prim树算法算法流程正确性kruskal算法算法流程正确性本文是对网上资料的一些整合,附加了部分个人的理解,主要参考下面两篇博客prim证明Kruskal证明prim树算法算法流程一开始任意选定一个点,然后在所有与选定点相邻的边中选出一条代价最小且另一端没有被选中的边加入生成树,然后反复迭代这个过程即可得到最小生成树.正确性设最小生成树为GGG,使用primprimprim算法得到的生成树为G′G'G′他们加入的边只有xxx处不同,考虑primprimprim算法第一次遇到不同的原创 2021-07-27 08:46:07 · 561 阅读 · 0 评论 -
二逼平衡树
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;const int N = 4e7+10;const int inf = 1e9;#define mid (l+r>>1)int n,m,a[maxn];int id,root[maxn],ls[N],rs[N],sum[N],rt1[N],rt2[N];int li[maxn],top;int lowbit(int x){ re原创 2021-06-27 10:51:30 · 187 阅读 · 0 评论 -
P2617 Dynamic Rankings(动态区间第k小)
LINK#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;#define mid (l+r>>1)int n,m,li[maxn<<2],top,a[maxn];struct p{ int type,l,r,k;}q[maxn];int sum[maxn<<9],ls[maxn<<9],rs[maxn<<9],id;int rt原创 2021-06-22 22:08:36 · 239 阅读 · 0 评论 -
扩展KMP(Z函数),线性LCP
下面解释的并不完整,下次来补充求串sss的每个后缀和串ppp的最长公共前缀(lcp)(lcp)(lcp)设我们求出了一个数组z\rm zz,zi\rm z_izi表示lcp(p[1...pl],p[i...pl])\rm lcp(p[1...pl],p[i...pl])lcp(p[1...pl],p[i...pl])首先考虑我们求出了i∈[1,k−1]i\in[1,k-1]i∈[1,k−1]的所有exlcpi\rm exlcp_iexlcpi,考虑求exlcpk\rm exlcp_kexlcpk原创 2021-06-19 23:29:16 · 376 阅读 · 0 评论 -
WQS二分/带权二分/凸优化DP
nnn个物品,限定选择mmm个物品求最大/最小权值。当然具体怎么计算权值按照题目的意思来定设g(x)g(x)g(x)表示强制选择xxx个物品能得到的最大权值且(x,g(x))(x,g(x))(x,g(x))在平面上形成一个凸函数,就可以使用wqswqswqs二分思想是,我们知道这个凸包的大概形状,但是不知道具体的点(x,g(x))(x,g(x))(x,g(x))(直接求复杂度高)考虑用一条斜率为kkk的直线去切这个凸包,可以得到一个切点,满足过这个切点截距最大设这条直线是y=kx+by=kx原创 2021-04-30 20:28:52 · 314 阅读 · 1 评论 -
[模板]主席树一(可持久化数组)
LINK#include <bits/stdc++.h>using namespace std;const int maxn = 4e7+19;#define mid (l+r>>1)int n,m,id;int val[maxn],a[maxn],ls[maxn],rs[maxn],rt[maxn];void build(int &rt,int l,int r){ if( !rt ) rt = ++id; if( l==r ){ val[rt] = a[原创 2021-04-20 16:54:12 · 154 阅读 · 0 评论 -
[模板]Poj2976 Dropping tests(01分数规划入门)
传送门最大化∑ai∑bi=r\frac{\sum a_i}{\sum b_i}=r∑bi∑ai=r那么∑ai−r∗∑bi=0\sum a_i-r*\sum b_i=0∑ai−r∗∑bi=0那么对于所有不同的选取物品方式,∑ai\sum a_i∑ai和∑bi\sum b_i∑bi是各不相同的令f(r)=B−Arf(r)=B-Arf(r)=B−Ar画在坐标轴就是很多条直线,斜率负数,且交yyy轴正半轴我们要求的就是最靠右的和xxx轴的交点,此时是最大值怎么求?考虑在x=midx=m原创 2020-10-23 10:52:38 · 254 阅读 · 0 评论 -
【模板】2-SAT 问题
LINK问题nnn个布尔变量,mmm组限制,每组限制形如a,x,b,ya,x,b,ya,x,b,y表示a=xa=xa=x和b=yb=yb=y一定有一个成立(其中x,yx,yx,y是布尔值)求出一组可行解,或者说明这是不可能的2-SAT这篇博客讲的不错,下面的图片都是"借"的拆点,原图中的点iii表示falsefalsefalse,i+ni+ni+n表示truetruetrue对于a=true∣∣b==falsea=true||b==falsea=true∣∣b==false一定成立其中的至少原创 2021-04-01 21:15:20 · 197 阅读 · 1 评论 -
上下界网络流全家桶(附带loj模板)
注意\color{Red}注意注意无源汇上下界可行流⚪\color{Red}{⚪}⚪问题描述一个有向图,每条边拥有一个流量下界LLL和流量上界RRR是否存在一种方式使得在满足流量守恒的情况下,满足每条边的上下界。因为每条边至少需要LLL的流量,那初始时,直接给每条边输入LLL的流量。但是这样,肯定是不满足流量守恒的。设inxin_xinx表示流入xxx的流量,outiout_iouti表示流出xxx的流量对于一个点inx>outxin_x>out_xinx>outx原创 2021-03-19 21:50:09 · 321 阅读 · 0 评论 -
差分约束详解([从建图选择到建图技巧])
目录~Ⅰ.最短路,最长路建图方式①跑最短路②.跑最长路③.选择最长路还是最短路的区别Ⅱ.关于建图技巧①.乘法转对数取LnLnLn②.三个变量的不等式,二分其中一个变量Ⅰ.最短路,最长路建图方式比如对于不等式dis[u]<=dis[v]+xdis[u]<=dis[v]+xdis[u]<=dis[v]+x①跑最短路我们由vvv向uuu连一条权值为xxx的边,然后跑最短路,就能满足限制。为什么??假设我们求出了dis[v]dis[v]dis[v],因为vvv到uuu有权值为xxx的原创 2021-03-07 17:36:06 · 512 阅读 · 0 评论 -
AC自动机[模板+图讲解]
目录~failfailfail指针的匹配过程预处理failfailfail指针预处理完毕,开始ACACAC传送门下面的图来源于这个博主^_^,直接搬过来方便一点failfailfail指针的匹配过程先把nnn个模式串建立字典树我们拿文本串abcdeabcdeabcde进去匹配一开始进入最左边的分支abcdabcdabcd,成功匹配到一个!!!然后就没然后了,然后开始从bbb暴力匹配…不是的,这里我们也应该像KMPKMPKMP那样利用已经匹配的性质进行跳跃我们定义fail[i]fail[原创 2021-02-10 19:10:47 · 382 阅读 · 1 评论 -
主席树模板(静态区间第k小)
传送门#include <bits/stdc++.h>using namespace std;#define mid (l+r>>1) const int maxn = 2e7+10;int n,id,m,val[maxn],a[maxn],ls[maxn],rs[maxn],rt[maxn];void build(int &rt,int l,int r){ rt = ++id; if( l==r ){ val[rt] = a[l]; return; }原创 2021-01-30 18:30:31 · 224 阅读 · 0 评论 -
POJ1222 EXTENDED LIGHTS OUT(高斯消元异或方程组)
传送门Ⅰ.Ⅰ.Ⅰ.枚举第iii个未知数,往下找一行有系数的换过来Ⅱ.Ⅱ.Ⅱ.使用这一行消除掉其余行的第iii个未知数Ⅲ.Ⅲ.Ⅲ.得到解#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 100;int a[maxn][maxn],casenum=0;void gauss(原创 2021-01-27 10:18:14 · 232 阅读 · 0 评论 -
这可能是最通俗最详细的生成函数讲解了吧!!!
初识生成函数生成函数是一个关于xxx的多项式,用于表示一个数列.比如一个数列sss=1,2,3,4,5,6,7…那么sss对应的生成函数就是1+2x+3x3+4x4+5x5...1+2x+3x^3+4x^4+5x^5...1+2x+3x3+4x4+5x5...生成函数有什么用??举个讲生成函数都会提到的经典例子.物品AAA有222个,物品BBB有222个,物品CCC有333个取出kkk个物品有多少种取法?这种问题一般可用背包解,但其实背包也是在模仿很像生成函数.物品AAA的生成函数是1原创 2020-12-05 19:33:52 · 3235 阅读 · 21 评论 -
小球遇上盒子的八种模型
现在有nnn个球,mmm个盒子Ⅰ.球同,盒不同,无空箱\color{Red}Ⅰ.球同,盒不同,无空箱Ⅰ.球同,盒不同,无空箱那么nnn个球形成了n−1n-1n−1个间隙,于是可以用m−1m-1m−1个隔板分成mmm组方案数是Cn−1m−1C_{n-1}^{m-1}Cn−1m−1,其中n>=mn>=mn>=mⅡ.球同,盒不同,允许空箱\color{Red}Ⅱ.球同,盒不同,允许空箱Ⅱ.球同,盒不同,允许空箱相当于多加mmm个球预先给mmm个盒子每个放一个,这样保证了无空箱于是现原创 2020-12-05 13:46:59 · 1090 阅读 · 0 评论 -
FFT的一点简洁证明解释(终于看懂亿点点了....)
阅读前先自行了解点值表示法,系数表示法,以及wnkw_n^{k}wnk(复数域,单位根)的概念因为篇幅原因不在这里累赘了.FFT两步走\color{Red}FFT两步走FFT两步走求f(x)f(x)f(x)的点值表示法f(x)=a0+a1∗x+a2∗x2...an−1∗xn−1f(x)=a_0+a_1*x+a_2*x^2...a_{n-1}*x^{n-1}f(x)=a0+a1∗x+a2∗x2...an−1∗xn−1如果随意取nnn个不同的xxx代入计算,复杂度是O(n2)O(n^2)O原创 2020-12-02 11:26:48 · 459 阅读 · 0 评论 -
度数K限制的最小生成树
传送门k_thk\_thk_th度的最小生成树#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <utility>#include <cstdio>using namespace std;const int N = 32;const int inf = 1e9;原创 2020-11-22 20:48:46 · 388 阅读 · 0 评论 -
无向图floyd最小环
传送门考虑任意一个环u−v−k−uu-v-k-uu−v−k−u删去任意一条边比如u−vu-vu−v,那么v−k−uv-k-uv−k−u一定是(u,v)(u,v)(u,v)的最短路也就是代码中的dis[u][v]+mp[v][k]+mp[k][u]dis[u][v]+mp[v][k]+mp[k][u]dis[u][v]+mp[v][k]+mp[k][u]#include <bits/stdc++.h>using namespace std;const int inf = 5e8;//注原创 2020-11-21 23:56:27 · 257 阅读 · 0 评论 -
HDU 3191 How Many Paths Are There(次短路数目)
传送门我人傻了,感觉学废了,次短路都不记得写…在dijstradijstradijstra的过程中多给点一个信息就是作为次短路还是最短路入队所以一个点最多可以入队两次还有个细节是,当最短路是infinfinf时,更新最短路,次短路不需要继承最短路因为此时次短路的路径数依然是000#include <bits/stdc++.h>using namespace std;const int inf = 1e9;const int maxn=4e5+10;int n,m,s,t;s原创 2020-11-21 11:11:30 · 229 阅读 · 0 评论 -
【模板】A*B Problem升级版(FFT快速傅里叶)
总算是弄懂了一点点FFTFFTFFT但是那个蝴蝶操作还只是背的板子呜呜先放个优化高精度乘法的板子在这里把P3803 【模板】多项式乘法(FFT)#include <cmath>#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=5e6+10;const double PI = acos(-1.0);char s1[原创 2020-10-24 19:30:59 · 314 阅读 · 0 评论 -
线段树优化建图[模板]
线段树优化建图Codeforces B模板#include <bits/stdc++.h>using namespace std;#define ls (rt<<1)#define rs (rt<<1|1)#define mid (l+r>>1)#define lson ls,l,mid#define rson rs,mid+1,rtypedef long long ll;const int maxn=2e6+10;const ll in原创 2020-10-01 11:19:02 · 253 阅读 · 0 评论 -
高斯消元[模板]
void guess(int n)//第n列是等式的右边{ for(int i=1;i<=n;i++)//现在开始消除i列 { int r=i;//记录系数最大的 for(int j=i+1;j<=n;j++) if( fabs( mp[r][i] )<fabs( mp[j][i] ) ) r=j; if( i!=r ) swap( mp[i],mp[r] );//把系数最大的换到当前行 double div = mp[i][i]; for(int j=原创 2020-09-28 21:30:29 · 183 阅读 · 0 评论 -
经典母函数入门[小结]
母函数很神奇的一个东西嘞问题:现在有1克,2克,3克,4克砝码各一个,可以选出几种重量?这里我们用母函数来实现对一克的砝码来说,不选记作是x0,也就是1,选的话记作是x1对一克的砝码来说,不选记作是x^0,也就是1,选的话记作是x^1对一克的砝码来说,不选记作是x0,也就是1,选的话记作是x1对两克的砝码来说,不选记作是x0,也就是1,选的话记作是x2对两克的砝码来说,不选记作是x^0,也就是1,选的话记作是x^2对两克的砝码来说,不选记作是x0,也就是1,选的话记作是x2...........原创 2020-09-15 20:02:02 · 230 阅读 · 0 评论 -
圆方树学习笔记(+例题详解)
做点双连通的时候发现很多题目可以用圆方树写特意去学了一下,入门很简单嘛,而且是个很神奇的东西!!前置知识:点双连通分量,没了\color{Red}前置知识:点双连通分量,没了前置知识:点双连通分量,没了圆方树大概就是把一般图变成树的结构,然后我们就可以在上面大概就是把一般图变成树的结构,然后我们就可以在上面大概就是把一般图变成树的结构,然后我们就可以在上面乱搞了比如给定一张无向图,怎么把它转化为树?比如给定一张无向图,怎么把它转化为树?比如给定一张无向图,怎么把它转化为树?大概做法是:求出所有点原创 2020-09-03 00:02:56 · 535 阅读 · 3 评论 -
P4298 [CTSC2008]祭祀(dirworth+各种二分图定理)
大前提是DAG(有向无环图)大前提是DAG(有向无环图)大前提是DAG(有向无环图)链:一个点集中任意两点u,v存在u−v或v−u链:一个点集中任意两点u,v存在u-v或v-u链:一个点集中任意两点u,v存在u−v或v−u反链:一个点集中任意两点u,v不可达反链:一个点集中任意两点u,v不可达反链:一个点集中任意两点u,v不可达最小路径覆盖:使用最少的链去覆盖所有点,且每个点只被覆盖1次最小路径覆盖:使用最少的链去覆盖所有点,且每个点只被覆盖1次最小路径覆盖:使用最少的链去覆盖所有点,且每个点只被覆盖原创 2020-08-30 19:48:17 · 316 阅读 · 0 评论 -
上下界最小可行费用流[模板]
#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;const int inf=1e9;int n,m,ss,tt,s,t,s_,ans;struct edge{ int to,nxt,w,flow;}d[maxn]; int head[maxn],cnt=1;int in[maxn],dis[maxn],flow[maxn],pre[maxn],vis[maxn];void add(int u,i原创 2020-08-30 10:56:47 · 398 阅读 · 0 评论 -
最小割的可行边和必须边(以及最小割的构造)
最小割的可行边(u,v)Ⅰ.(u,v)满流Ⅰ.(u,v)满流Ⅰ.(u,v)满流Ⅱ.残量网络中u无法到达vⅡ.残量网络中u无法到达vⅡ.残量网络中u无法到达v如果u能到v,为什么要割掉这条边呢?割掉后还是连通的呀!!如果u能到v,为什么要割掉这条边呢?割掉后还是连通的呀!!如果u能到v,为什么要割掉这条边呢?割掉后还是连通的呀!!最小割的必须边(u,v)Ⅰ.(u,v)满流Ⅰ.(u,v)满流Ⅰ.(u,v)满流Ⅱ.残量网络中源点能到u,v能到汇点Ⅱ.残量网络中源点能到u,v能到汇点Ⅱ.残量网络中源点能原创 2020-08-27 20:58:10 · 1028 阅读 · 0 评论 -
有源汇上下界最小流[模板]
这只是其中一种做法这只是其中一种做法这只是其中一种做法(我暂时还没有理解,只是先放个模板而已)首先还是根据下界来建图,原图源点s,汇点t首先还是根据下界来建图,原图源点s,汇点t首先还是根据下界来建图,原图源点s,汇点t然后因为流量守恒,新建超级源s1和超级汇t1向各个点连边然后因为流量守恒,新建超级源s1和超级汇t1向各个点连边然后因为流量守恒,新建超级源s1和超级汇t1向各个点连边跑一遍s1到t1的最大流(也就是可行流)跑一遍s1到t1的最大流(也就是可行流)跑一遍s1到t1的最大流(也就是可行流原创 2020-08-26 17:08:28 · 414 阅读 · 0 评论 -
【模板】有源汇上下界最大流
传送门hhhhhhhhhhhh题意文文要在nnn天内给mmm个女孩拍照第iii天可以给CiC_iCi个女孩拍照,可以给第jjj个女孩拍[L,R]张照片[L_,R]张照片[L,R]张照片而且在第iii天,拍照总数不能超过DiD_iDi且每个女孩最少拍gig_igi张照骗问nnn天可以最多拍多少照片现在假设你已经模糊理解了上下界最大流再往下看吧,主要阐述一下怎么写为了把n天联系起来,我们需要源点s1为了把n天联系起来,我们需要源点s1为了把n天联系起来,我们需要源点s1为了把m个女孩联原创 2020-08-26 15:58:24 · 264 阅读 · 0 评论 -
有源汇有上下界最大流【模板】loj116
loj的模板和无源汇相比就是多了源点s和汇点t和无源汇相比就是多了源点s和汇点t和无源汇相比就是多了源点s和汇点ts和t点不满足流入=流出,那我们就变化一下s和t点不满足流入=流出,那我们就变化一下s和t点不满足流入=流出,那我们就变化一下t到s连一条流量inf的边,这样构成循环流,s和t也满足流量守恒t到s连一条流量inf的边,这样构成循环流,s和t也满足流量守恒t到s连一条流量inf的边,这样构成循环流,s和t也满足流量守恒接下来就和无源汇可行流一样了,可行流就是t到s的流量(s−t的反向弧嘛)原创 2020-08-26 14:20:08 · 323 阅读 · 0 评论 -
无源汇有上下界可行流[loj模板]
loj模板题思想是,如果存在可行流,每条边必定至少有下界的流量思想是,如果存在可行流,每条边必定至少有下界的流量思想是,如果存在可行流,每条边必定至少有下界的流量那么直接用下届填充边的流量那么直接用下届填充边的流量那么直接用下届填充边的流量每条边的流量就变成了[0,up−down]每条边的流量就变成了[0,up-down]每条边的流量就变成了[0,up−down]此时有一些点流入的流量大于流出的流量,记作in[i]<0此时有一些点流入的流量大于流出的流量,记作in[i]<0此时有一些点流原创 2020-08-26 12:24:03 · 310 阅读 · 0 评论 -
最大权闭合子图(最小割原理)
闭合子图指定义\color{Red}闭合子图指定义闭合子图指定义在闭合子图中,每个点能到的所有点都在子图中在闭合子图中,每个点能到的所有点都在子图中在闭合子图中,每个点能到的所有点都在子图中最大权闭合子图\color{Red}最大权闭合子图最大权闭合子图在所有闭合子图中,点权最大的闭合子图在所有闭合子图中,点权最大的闭合子图在所有闭合子图中,点权最大的闭合子图最大权闭合子图常用最小割来解决点权正的和s源点相连,流量是点权点权正的和s源点相连,流量是点权点权正的和s源点相连,流量是点权点权负的和汇原创 2020-08-25 19:18:20 · 422 阅读 · 0 评论 -
2-SAT[模板]
互斥的点加一条边互斥的点加一条边互斥的点加一条边缩点后,保证互的点不在一个强连通内缩点后,保证互的点不在一个强连通内缩点后,保证互的点不在一个强连通内就可以拓扑排序就可以拓扑排序就可以拓扑排序scc编号小的拓扑序号反而大(也就是先进行拓扑)scc编号小的拓扑序号反而大(也就是先进行拓扑)scc编号小的拓扑序号反而大(也就是先进行拓扑)我们需要的就是拓扑号大的,这样对后续影响小我们需要的就是拓扑号大的,这样对后续影响小我们需要的就是拓扑号大的,这样对后续影响小2-SAT【模板题】#include原创 2020-08-25 11:26:32 · 214 阅读 · 0 评论 -
对斜率优化的一点理解(围绕图讲解)
P3195 [HNOI2008]玩具装箱这道题作为斜率优化入门真是再好不过了,我也不例外普通的转移方程普通的转移方程普通的转移方程dp[i]=dp[j]+(sum[i]−sum[j]+i−j−1−l)2dp[i]=dp[j]+(sum[i]-sum[j]+i-j-1-l)^2dp[i]=dp[j]+(sum[i]−sum[j]+i−j−1−l)2这是n2的算法,考虑如何O(1)找到前面最优的j转移这是n^2的算法,考虑如何O(1)找到前面最优的j转移这是n2的算法,考虑如何O(1)找到前面最优的j转原创 2020-08-24 14:28:21 · 387 阅读 · 0 评论 -
点双连通分量[模板]
#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;int n,m,cut[maxn];struct edge{ int to,nxt;}d[maxn]; int head[maxn],cnt=1;void add(int u,int v){ d[++cnt]=(edge){v,head[u]},head[u]=cnt;}int low[maxn],dfn[maxn],stac[maxn],top原创 2020-08-24 09:36:35 · 500 阅读 · 4 评论 -
n^3的KM完美匹配算法(bfs迭代版本)
代码中有些注释,还请学了n^4的dfs再来学习这个模板题目#include <bits/stdc++.h>using namespace std;#define int long longconst int inf=1e18;const int maxn=509;int n,m,cost[maxn][maxn],mat[maxn],pre[maxn];int wisha[maxn],wishb[maxn],va[maxn],vb[maxn],slack[maxn];void i原创 2020-08-23 15:53:19 · 1373 阅读 · 0 评论 -
tarjan割点和割边[模板]
割点int low[maxn],dfn[maxn],stac[maxn],vis[maxn],sd[maxn];int cut[maxn],bridge[maxn],id,top;void tarjan(int u,int fa){ low[u]=dfn[u]=++id; int child=0; for(int i=head[u];i;i=d[i].nxt ) { int v=d[i].to; if( !dfn[v] ) { tarjan(v,fa),low[u]=min原创 2020-08-20 16:25:25 · 265 阅读 · 0 评论 -
网络流24题(星际转移问题)
这个问题的难点在于如何表示时间的流逝很容易想到源点是地球,然后中间一串的空间站,最后连向汇点月球很容易想到源点是地球,然后中间一串的空间站,最后连向汇点月球很容易想到源点是地球,然后中间一串的空间站,最后连向汇点月球空间站间各自连边,流量是飞船的容量空间站间各自连边,流量是飞船的容量空间站间各自连边,流量是飞船的容量这样跑最大流跑出来的其实是一天能到的最多的人,不能满足要求假如我们再开一条上面的链呢?也许就能表示两天的最大流了。假如我们再开一条上面的链呢?也许就能表示两天的最大流了。假如我们再开一条原创 2020-08-19 16:37:40 · 395 阅读 · 0 评论 -
斯坦纳树[模板]
问题描述最小斯坦纳树[模板]给定n个点m条边,再给你包含k个节点的点集s给定n个点m条边,再给你包含k个节点的点集s给定n个点m条边,再给你包含k个节点的点集s要求从图中选出一个权值和最小的连通子图,包含点集s要求从图中选出一个权值和最小的连通子图,包含点集s要求从图中选出一个权值和最小的连通子图,包含点集s结论选出来的子图是一颗树,因为不存在环假如存在环,去掉环上任意一点不改变连通性,且权值更小那么定义dp[i][j]为以i为根的子树包含s点集状态为j的最小代价那么定义dp[i][j]为以原创 2020-08-19 14:42:33 · 352 阅读 · 0 评论 -
座标离散化(模板)
for(int i=1;i<=n;i++) { cin >> b[++top] >> b[++top]; li[i]=b[top-1],ri[i]=b[top]; } sort(b+1,b+1+top); top=unique(b+1,b+1+top)-b-1; s=0,t=top+1; for(int i=1;i<=n;i++) { int len=ri[i]-li[i]; li[i]=lower_bound( b+1,b+1+top,l.原创 2020-08-19 11:41:36 · 225 阅读 · 0 评论