TriCk
-
24.05.11 枚举
1 到n 中每个数所有在n 以内的倍数,复杂度为O(n\ln n) -
24.05.26 枚举子集:
for(int T=S;T;T=(T-1)&S)总时间复杂度
O(3^n) . -
24.05.30 括号序列类问题
转化成对应前缀和的一段折线考虑。(/bx @Iceturky)
- 24.06.01 无逆元时要从总乘积中除掉一项
维护前后缀乘积(/bx @Iceturky)
-
24.06.17
!!f int 强转 bool -
24.06.20 序列问题有后效性,倒序处理
f_i 为i 到n 的答案并乘上系数(/bx @Aimtpyim) -
24.07.17 序列问题可以转成前缀和,之后区间操作可能转化为两点操作
-
24.07.29 两种不同的暴力拼起来可能就是根号分治,参数
B 一定要让各部分复杂度相近,需要考虑到常数因素(SDSC Day5T2) -
24.10.17 线性求逆元
求出
- 25.02.06 字典序最优问题
使用可持久化值域线段树维护哈希值,从而快速求出最长公共前后缀,进行比较和更新。
- 25.02.17 点边容斥
当树上每个连通块作为根计算答案时,可用每个点为根计算一遍并累加,再减去以所有边连接的两个点合成大点作为个根的答案,这样每个连通块的贡献只有
- 25.04.29 整点凸包
当凸包的横纵坐标均为
- 25.05.01 竞赛图相关
竞赛图强连通缩点后的 DAG 呈链状, 前面的所有点向后面的所有点连边;
竞赛图存在哈密顿回路和哈密顿路径。
- 25.05.04 矩阵快速幂
多次询问时可预处理转移矩阵的
- 25.09.26 排列字典序
若要最小化排列
证明考虑首先最小化
- 25.11.03 线段树二分
实在困难,记一下。代码选自 P11210。
int getp(int u,int l,int r,int L)
{
if(r<L) return n+1;
if(l>=L)
{
if(wy[u]<L) return n+1;
if(l==r) return l;
}
int rl=getp(Lc,L);
return rl==n+1?getp(Rc,L):rl;
}
-
25.11.14 线性基求后继(异或上
x )int nxt(int lim,int x) { int y=x,s=0; ini(); vector <int> tv; for(int i=0;i<=30;i++) if(a[i]) tv.pb(a[i]),s++; for(int i=s-1;i>=0;i--) if((y^tv[i])>y) y^=tv[i]; if(y<lim) return inf; for(int i=s-1;i>=0;i--) if((y^tv[i])>=lim) y^=tv[i]; return y; } -
25.12.02
[&](int i,int j)->bool{return a[i].x[d]<a[j].x[d];} -
25.12.12 正则二分图完美匹配
每次随机选一个左部未匹配点
- 25.12.21 二分图相关
二分图最大匹配数与最小点覆盖数相等,最大独立集为最小点覆盖的补集。
构造一组最小点覆盖,可在最大匹配