[其他] 关于为什么做题效率低下

我不会用 && QAQ

if(cnt[S0] & cnt[S ^ S0])

我不会算时间复杂度 QAQ

你以为 (O(Tn^2))
实际上 (O(Tn^2logmod))

我不会主席树 QAQ

x = ++cnt; t[x] = t[y];
if(l == r){
	t[x].m = m[pos], t[x].a = a[pos];
	return;
}

我不会树上差分 QAQ (s 是 t 的祖先)

for(int j(1); j <= m; ++j)
  if(i & (1 << j - 1)) ++pas[s[j]], --pas[t[j]], sum += v[j];

我不会树剖 QAQ

if(l == r){
	t[x].len = 2, t[x].h = new int[2];
	t[x][1] = b[dfn[l]], t[x][0] = a[dfn[l]]; return; 
}

花式爆 int 先乘除后加减喂

if(t[x].sum + t[y].siz * s >= 1LL * c * s) puts("TAK");

区 间 查 询

void get(int x, int l, int r, int L, int R){
	if(l == r){
		g = gcd(g, t[x].g); return;
	}
	int mid = l + r >> 1;
	if(L <= mid) get(ls(x), l, mid, L, R);
	if(mid < R) get(rs(x), mid + 1, r, L, R);
}  

为什么直接就和根判相等了喂

int x, y; split(T, t[now].val, x, y);
if(t[x].val == t[now].val) /* do sth */

原来是快速幂错了是我没想到的

inline int qpow(int x, int a){
	int sum = 1;
	while(a & 1){
		if(a & 1) sum = 1LL * sum * x % mod;
		x = 1LL * x * x % mod, a >>= 1;
	} return sum;
}

卡常的时候还 #define int long long

自己更新自己的 len

int nq = ++siz, p = lst; lst = np;
t[np].len = t[lst].len + 1;

lca 不 return

int LCA(int x, int y){
	if(dep[x] < dep[y]) swap(x, y);
	while(dep[x] > dep[y]) x = f[x][lg[dep[x] - dep[y]]];
	if(x == y) return x;
	for(Ri int i(lg[x]); ~i; --i) if(f[x][i] ^ f[y][i]) x = f[x][i], y = f[y][i];
}

点分中心白找了

for(Ri int i(head[x]); i; i = e[i].nx){
	int y = e[i].to; if(vis[y]) continue;
	ALL = siz[y], rt = 0;
	cs(y, 0), cs(rt, 0);
	solve(y, x);
}

斜率用 int 相除

int x0, y0, x1, y1; double k;
k = (y1 - y0) / (x1 - x0)
原文地址:https://www.cnblogs.com/IrisT/p/15271351.html