现场赛记录:[名称:奖项/排名]
2019:
To do List:
总结:
- 若一个式子长这样——$\sum_{i}\sum_{j}\binom{n}{i}\binom{m}{j}… $,可以考虑枚举一维然后利用二项式定理化简另外一维,降低了一层复杂度
- 一些数学猜公式题可以考虑归纳
- 莫队的时候尤其要注意排序不要写错,写错了会出现莫名的WA和RE,不明白为什么(雾
- 写斜率优化的时候,要注意维护的凸包是叉积严格<0或者>0,=0的时候一定要删掉,容易出现问题
- 要尤其注意sort时候<的重载,写的不好会TLE
- 随机点算图形期望的时候要先真·随机产生点,再把不在范围内的点剔除
- 实数二分保留答案的那一边不要有eps(比如:l=mid,r=mid-eps或者l=mid+eps,r=mid)
- 写凸包的时候注意<=0和>=0不能写反
- 一个字符串s的循环周期并不一定是最小循环周期的倍数,如aaabcdaaa,6,7,8,9都是其循环周期
- 指数降幂公式:
ax%p=ax%ϕ(p)+ϕ(p)%p(x⩾ϕ(p))
- 看见
a(n)和
a(n/2)关系的递推式,要想到二进制
- 形如
x2−dy2=1(d是正整数且不是完全平方数)的不定方程叫pell方程,设其有一组特殊最小正整数解
(x0,y0)则有$x_{n+1}=x_0x_n+dy_0y_n,y_{n+1}=y_0x_n+x_0y_n $ 以及 $ x_{n+2}=2x_0x_{n+1}-x_n,y_{n+2}=2x_0y_{n+1}-y_n $。
- 对于
x2−dy2=−1(d是正整数且不是完全平方数),可能有解可能有无数解,解为
xn+1=(x02+dy02)xn+2dx0y0yn,yn+1=2x0y0xn+(x02+dy02)yn。若d为素数且d=4k+1,则必定有解
- 对于
x2−dy2=k2,等价于
(kx)2−d(ky)2=1
- 若b能整除a,则
ba%mod=ba%(b×mod)
- 当用cdq分治+FFT处理递推卷积的时候,若形式是
f(n)=∑f(i)×f(n−i),那么在处理
cdq(l,r)的时候,将
A=(fl,fl+1,...,fmid)与B=(f1,f2,...,fr−l)卷积的时候,要注意对于B中的
fi,若
i<l or i>mid,系数要乘2。
- 要求字典序最小的问题一般都能贪心逐位确定。
-
(x+1)k↓=xk↓+kx(k−1)↓,
xk=∑i=0kxi↓S(k,i)
- 对于任何数x,
x0↓=1
- 无向图Matrix-Tree定理:求无向图G的生成树个数。设
D是图G的度数矩阵(
D(i,i)表示第i个点的度数,其它位置是0),设
A是图G的邻接矩阵(
A(i,i)=0,
A(i,j)表示i和j之间的边数),基尔霍夫矩阵
Q=D−A,则对于
Q的任意一个代数余子式
Q′,
det(Q′)的值就是图G的生成树个数。
- 有向图Matrix-Tree定理:求以某个点为根的树形图个数。
D、A、Q的定义同无向图的,对于点
w,设
tw(G)表示以w为根的树形图的个数,
Qw表示矩阵Q第w行对应的代数余子式,那么
tw(G)=det(Qw)。
- BEST theorem:求欧拉图中欧拉回路的个数。
ec(G)=tw(G)×∏v∈V(deg(v)−1)!,其中
deg(v)表示点v的入度,
w的选取是任意的,因为容易发现对于欧拉图,所有点的
ti(G)的值都相同。
- $\binom{n}{a} \times \binom{a}{x} $ 不等于
(xn)
- 模2意义下的多项式降幂:
f(x)2=f(x2) (mod 2)
-
μ(n)2=∑d2∣nμ(d)
-
ϕn(x)表示n次单位根下的分圆多项式,那么有
xn−1=∏d∣nϕd(x),可以用来对于
xn−1的因式分解。分圆多项式可以通过莫比乌斯反演求得,即
ϕn(x)=∏d∣n(xd−1)μ(dn)。其中
ϕn(x)的最高次数正好是
ϕ(n),也就是说具体的求的时候可以将其对
xϕ(n)+1取模,类似背包那种的dp。
- 开根下取整可以用牛顿迭代的整除形式做,最终
k和
kn会收敛到相差<=1的数字。
- 对偶规则:
- 互补松弛性:在线性规划问题的最优解中,如果对应某一约束条件的对偶变量值为非零,则该约束条件取严格等式;反之,如果约束条件取严格不等式,则其对应的对偶变量也一定为零。
-
[imod2=0]等价于
2(−1)i+1i,可以用来式子化简
- 若需要求期望,并且不是在取模意义下,有时候需要dp求方案数和总权值和,但这个可能会很大,可以用long double来保存
- 建好一个kdtree之后,若要在上面寻找一个已有点,注意一定要以矩形的形式查找,两边都要递归下去
- 对于01图的最短路,可以采用双端队列,即如果当前扩展的边是0,就放队列开头,如果当前扩展的边是1,就放队列结尾,这样的话复杂度是线性的
- 容斥原理也可以通过递推来理解,设
F(P)表示至少有P个位置不合法的方案数,
G(P)表示恰好有P个位置不合法的方案数,那么
G(P)=F(P)−G(P+1),倒推一下,
G(0)就是答案
- 若一个最优化安排问题有明显的时间段,有t时刻的储存到t+1时刻之类的限制,往往都可以建成网络流模型;若网络流时间复杂度过不去,可以考虑能否贪心,贪心的一种思路就是从前往后我尽可能地买,在后面决定这些卖不卖,留到最后还没卖出的就可以视作当时没有制造出来
- 在考虑树上路径最优化问题的时候,可以考虑线头DP,在做线头DP的时候,先不考虑根节点k本身,先把它孩子子树合上来,然后再考虑从k点加线头进行转移,然后再考虑从k点封线头进行转移(可能会形成孤立点),然后给那些经过k点的方案加上k点的权值,有时候你还需要多开一个维度的状态表示是否经过了k点
- 在做queue或者priority_queue的时候,若从中间return了,那么下次再执行算法的时候一定要清空队列!
- 回滚莫队可以将一般莫队的删除操作变成撤销操作。按左端点所在块编号为第一关键字,右端点为第二关键字排序。对于左端点在同一个块里的询问我们统一处理:对于那些右端点也在块内的,我们直接暴力;对于那些右端点在块外的,一定是单增的,我们假设当前块的最右边是right,那么我们首先把右端点从上次的位置移到这次的位置(加入操作),然后把左端点从right移到当前询问的左端点,得到答案后,再把左端点移回right。(这是撤销操作,不是删除操作)
找规律题总结:
- OEIS、BM、插值
- 不少找规律的问题是前面几项或十几项没规律,从中间开始有规律
- 对一个数列找规律的时候,可能可以将其拆分成两个序列的并,分别可以OEIS/BM
训练实录:[时间 名称:通过题数/总题数,Rank:排名]