我不会用 &&
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)