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期望的线性性,转化后就是链上随机游走问题

组合数学

\[\sum_{i=0}^kC_n^i⋅C_m^{k-i}=C_{n+m}^{k} \]

对偶问题

若要求移除最少,可以考虑保留最多

最小链覆盖=最长反链

反链=一个集合,这个集合中所有的点两两不能到达

trick

结论,对于一般图的MST(最小生成树),我们可以把边集分为两部分分别做最小生成树,然后再把两部分最小生成树的边拿出来再做一次最小生成树,得到的就是原图的最小生成树

最大流=最小割,所以看到类似网络流的东西,可以考虑转成最小割跑dp,如CF724E

集合xor封闭性可以拿线性基来判,两两xor=集合内的元素

posted @ 2024-02-28 16:58  ciuim  阅读(45)  评论(0)    收藏  举报