dquery

CF 293E Close Vertices——点分治

独自空忆成欢 提交于 2021-02-16 10:22:40
题目: http://codeforces.com/contest/293/problem/E 仍旧是点分治。用容斥,w的限制用排序+两个指针解决, l 的限制就用树状数组。有0的话就都+1,相对大小不变。 切勿每次memset!!!会T得不行。add(sta[ l ].len)即可,但要判一下(l==r)以防不测。(真的有那种数据!) 最后注意树状数组的范围是L(即L+1),不是n。不然可以尝试: 2 10 12 1 5 #include<iostream> #include <cstdio> #include <cstring> #include <algorithm> #define ll long long using namespace std; const int N=1e5+ 5 ; int n,L,W,hd[N],xnt,to[N<< 1 ],nxt[N<< 1 ],w[N<< 1 ]; int mn,rt,f[N],l,r,siz[N],lm; ll ans; bool vis[N]; struct Sta{ int w,len;Sta( int w= 0 , int l= 0 ):w(w),len(l) {} bool operator < ( const Sta &b) const { return w==b.w?len<b.len:w< b.w;} }sta

莫队算法——从入门到黑题

自闭症网瘾萝莉.ら 提交于 2020-09-29 06:52:36
众所周知 ,莫队是由莫涛大神提出的,一种 玄学毒瘤暴力骗分 区间操作算法,它以简短的框架、 简单易记的板子 和优秀的复杂度闻名于世。然而由于莫队算法应用的毒瘤,很多可做的莫队模板题都有着较高的难度评级,令很多初学者望而却步。然而,如果你真正理解了莫队的算法原理,那么它用起来还是很简单的。 当然某些套左套右的毒瘤除外 0、前置芝士: 莫队算法还是比较独立的。不过你还是得了解了解以下的一些知识: \(1\) 、分块的基本思想(开根号等) \(2\) 、STL中 sort 的用法(手写cmp函数或重载运算符实现结构体的多关键字排序) \(3\) 、基(du)础(liu)的卡常技巧(包含 #pragma GCC optimize 系列) \(4*\) 、倍增/树剖 求LCA(树上莫队所需) \(5*\) 、数值离散化(用于应付很多题目) 至此全部完毕。撒花~~(雾 诶,别走啊qwq,我可不是在劝退qwq,如果你认为自己不懂这些东西也没关系,往下看吧qwq 1、莫队算法是个啥 来历: 前面已经介绍过了(逃 有兴趣的同学可以看一下 莫涛大神的知乎 然而这个算法到底是用来搞什么操作的呢?我们先看个例题: Luogu P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳

【模板整合计划】高阶数据结构

故事扮演 提交于 2020-08-13 02:01:50
【模板整合计划】高阶数据结构 一:【并查集】 1.【路径压缩】 【模板】 并查集 \(\text{[P3367]}\) #include<cstdio> #define Re register int const int N=1e4+3; int n,x,y,T,op,fa[N]; inline void in(Re &x){ int f=0;x=0;char c=getchar(); while(c<'0'||c>'9')f|=c=='-',c=getchar(); while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar(); x=f?-x:x; } inline int find(Re x){return x==fa[x]?x:fa[x]=find(fa[x]);} int main(){ in(n),in(T); for(Re i=1;i<=n;++i)fa[i]=i; while(T--){ in(op),in(x),in(y); if(op<2){if(find(x)!=find(y))fa[find(x)]=find(y);} else puts(find(x)==find(y)?"Y":"N"); } } 2.【按秩合并(启发式合并)】 【模板】 并查集 \(\text{[P3367]}\) (1).【Deep】