
倍增
lushanlushan0026
退役acmer,准研究生
展开
-
lca板子 带常数优化
#include<bits/stdc++.h> using namespace std; const int N = 2000; int h[N],nex[N<<1],to[N<<1],tot; void add(int x,int y){ to[++tot]=y;nex[tot]=h[x];h[x]=tot; } int fa[N][30],dep[N],lg[N]; void dfs(int u,int fath){ fa[u][0]=fath;dep[u]=d.原创 2020-05-24 19:16:46 · 401 阅读 · 1 评论 -
RMQ(ST表)模板
#include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int M[N][30]; int Query(int l,int r){ int k = log2(r-l+1); return max(M[l][k],M[r-(1<<k)+1][k]); } int main(){ int n,...原创 2020-04-15 10:26:45 · 698 阅读 · 0 评论 -
CodeForces - 1142B Lynyrd Skynyrd 倍增+思维
这个题很多地方都想到了 最后卡在了倍增优化 显然一开始给了一个环 我们可以找出每个值的前驱 当我们遍历a数组的时候 我们需要找出最小的包含一个循环的区间 为啥是最小呢 假如 这个循环是 3 1 2 然后a数组是 3 3 1 2 显然对于r=4的时候 l=2是最小区间 对于l<2的情况我们都是认为满足条件的 而相反我们不能把l=1作为最小区间 所以对于每个r我...原创 2020-04-14 23:19:04 · 392 阅读 · 0 评论