2023 12月及以前的总结
均摊
AT_joisc2018_a,路径覆盖问题考虑均摊,发现一次修改会在\(log\)条重链留下痕迹,那么每个痕迹只会被加进一次,覆盖一次,所以遍历每个重链只会有\(nlogn\)段,\(bit\)求逆序对就\(nlog^2n\)
维护连通块合并的直径
新的直径肯定是原来的两个连通块直径端点两两组合中最长的一条
凸性在最优化问题中的应用
P6893经典
指数级别
CF662C, CF1305G(妙妙题)
模拟费用流(反悔贪心)
相当于可以反悔的贪心,一般用priority_queue维护,P5470,P6943,UOJ455
组合计数
一些计数问题可以转化为括号序列计数问题,括号序列计数可以看作网格图从(0,0)走到(n,n),总方案数为\(C(2*n,n)\)然后如果不能经过某条直线,比如不能超过\(y=x\),变为不能触碰\(y=x+1\)可以容斥,减掉必经过这条直线的方案数,这个可以把原点对称过去,方案数为\(C(2*n,n-1)\)
CF1909F2典型的用到信息的时候再转移dp
分治
CF1175F
分治背包经典做法CF1442D,分治其实就是快速回滚的一个东西,比如单调栈弹去一些东西,可以考虑分治快速回滚
数据结构
线段树和kruskal重构树结合P9984
数学题
非常好数学题,使我的DNA旋转P9055
ad-hoc
很好构造,使我的大脑旋转CF1844G
构造CF1917E
长链剖分?
把最深的作为重儿子,然后把其他的链合并到长链上,就可以dp
二进制分组
如果遇到求任意某个点到其他点的最小值的时候,其实就是分成两组,从s组跑到t组的最优性问题,可以考虑二进制分组或者随机分组,详情见P5304旅行者
NOIP2023 T2
遇事不决建个图,建图不决造虚点。边其实等价于关系,如相等,不等,xor
dp
什么是DP,就是看你要求什么,求这个东西需要的限制与状态,如何转移,如P3592
CF1603D,分析k顶多不超过log n然后大力推式子,发现有决策单调性,做完了
斜率优化
\(f_i=min(f_j+a_i*b_j)\)
把 \(f_j+a_i*b_i\) 看作决策点 \(p_j(x,y)\),其中 \(x=-b_j,y=f_j\)
\(z=f_i=min(f_j+a_i*b_j)\) 可化成 \(y=a_ix+f_i\)
期望
期望总和*概率=期望
求期望步数达成条件可以逆推,如\(f(i)\)表示\(i\)这个条件到\(n\)的期望步数,显然\(f(n)=0\)
逆推时可以先算有多少概率变换状态,再加上那个状态的\(dp\)值乘到那个状态的期望
P3750期望的线性性,转化后就是链上随机游走问题
组合数学
对偶问题
若要求移除最少,可以考虑保留最多
最小链覆盖=最长反链
反链=一个集合,这个集合中所有的点两两不能到达
trick
结论,对于一般图的MST(最小生成树),我们可以把边集分为两部分分别做最小生成树,然后再把两部分最小生成树的边拿出来再做一次最小生成树,得到的就是原图的最小生成树
最大流=最小割,所以看到类似网络流的东西,可以考虑转成最小割跑dp,如CF724E
集合xor封闭性可以拿线性基来判,两两xor=集合内的元素

浙公网安备 33010602011771号