数据结构
GrittyB
这个作者很懒,什么都没留下…
展开
-
洛谷P3201 [HNOI2009] 梦幻布丁 (启发式合并)
什么是启发式合并?题目int a[N], n, m;int fcol[N];vector<int> st[N];int ans = 0;void Merge(int x,int y){ // x -> y // upd ans for(int i :st[x]){ if(a[i-1]==y) ans--; if(a[i+1]==y) ans--; } // upd原创 2022-03-22 16:07:48 · 165 阅读 · 0 评论 -
Closest Equals离线,树状数组,维护后缀min
int tree[N],n,m;int lowbit(int x){ return x & (-x);}// 维护 后缀minvoid add(int x,int y){ for (; x;x-=lowbit(x)){ tree[x] = min(tree[x], y); }}int ask(int x){ int ans = INF; for (; x<=n;x+=lowbit(x)){ ans =.原创 2022-03-09 16:55:32 · 155 阅读 · 0 评论 -
牛客寒假1 B炸鸡块君与FIFA22 ST表,log查询
int f[3][N][21];int qsm(int l,int r,int st){ int t = (st%3 + 3) % 3; int ans = st; for (int k = lg(r - l + 1); k >= 0;k--){ if(l + (1<<k) - 1 <=r){ ans += f[t][l][k]; t = (ans%3 +3) % 3;原创 2022-03-01 20:24:34 · 184 阅读 · 0 评论 -
D. The Number of Imposters 扩展域并查集
链接const int N = 2e5+10;int fa[2*N]; int get(int x){ if(x==fa[x])return x; return fa[x]=get(fa[x]);}bool query(int x,int y){ if( get(x) == get(y)) return true; return false;}void uni(int x,int y){ int rx = get(x);原创 2022-01-19 16:13:18 · 539 阅读 · 0 评论