每三天更新一次吧,把最近做的一些好的套路题放在这里。
套路1:判断[l,r]区间的数能不能组成等差数列,如果可以那么:
a[l+1]-a[l],a[l+2]-a[l+1]......a[r]-a[r-1]的绝对值的gcd等于k
[l,r]区间最大数-最小数=(r-l)*k
区间中没有重复的数
套路2:区间加等差数列问题
我们可以维护一个差分数组
例如数组:3 2 5 7 4它的差分数组就是:3 -1 3 2 -3
在[l,r]区间上加上一个A为首相K为公差的等差数列,就相当于在差分数组
的地l位加A,[l+1,r]位加K,第r+1位减去A+(r-l)*K就行了
求a[p]就是将差分数列第1-p项全部加起来
套路3:
做LCA题目时可以用的数组:dis[i][j]表示i往上2^j得到的路径总和/最大值/最小值。
套路4:
这里就一个性质
性质:一个点在这颗树上所能到达的最远距离一定是它到树的直径的两个端点中的一个的距离
套路5:
路径覆盖问题,有两种做法,一种是树上差分,另一种就是暴力树剖
由于最近在学习树剖,所以拿这个练习一下。
u到v就相当于用树链剖分给u到v之间的最短路径边权加1,刚开始所有路径的边权都是0.
然后询问u,v边覆盖几次,就相当于树剖询问u到v的边权和
套路6:
在无向图中,如果图中任意两个点u,v,u能到达v或者v能到达u,那么入度和初度一共最多只有两个为0。
套路7:
洛谷的二分答案题目都应该看一看都是套路题,都是好题(例如洛谷2115)
套路8:
这里给出大概的题目
题目大意:给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。
做法:二分答案+最小生成树
我们二分枚举mid,给每条白色边加上mid这个权值,然后跑最小生成树,判断能否覆盖need条边。
如果可以那么ans=min(ans,sum(跑出来的最小生成树的值)-mid*白色边的个数)