简单数数
AGC013D
最大的问题是初始状态你不知道,怎么样数两两不平移的折线?
考虑只数 刚好碰到 过边界的折线,就做完了。
这提示我们找一个代表元。
不定方程解计数
先钦定 \(f_{i}\) 表示至少有 \(i\) 个盒子放了 \(k\) 个球,然后找 \(i+1\) 个盒子先放 \(k+1\) 个球,剩下的随便放插板技术,最后在对 \(f_{i}\) 做容斥求出答案.
CCPC 秦皇岛
把 \(0\) 看成分隔符即可。
CF1895F
首先容斥一下答案为至少有一个小于等于 \(x+k-1\) 即 \(\min(a_i) \leq x+k-1\),减去所有的都小于 \(x-1\) 即 \(\max(a_i) \leq x-1\),考虑最小值有 \(x+k-1\) 种,确定了此时的取值以及差分数组就能还原原数组,又因为钦定的是最小值所以保证了非负。
AGC013E
等价于一个序列分成若干段,有的地方不能分,每个段放两个不同的球,求方案数。
考虑 \(f_{i,0/1/2}\) 表示考虑前 \(i\) 个且结尾这一段放了多少个,然后是不是要新开一段去讨论,断点特殊转移,剩下的预处理转移矩阵去倍增。
trick:几次方等价于放几个球。
CSA
等价于每次删一个叶子,求删完的方案数。
考虑换根,等价于是从根节点开始不断向下扩展。
考虑按加入时间给每个点给标号,定义 \(f_{x}\) 为子树答案,然后合并答案是子树内相对答案不变,然后按顺序选出一些位置放,直接组合再换根即可。
ARC101E
既然要所有路径都要被染色,改成钦定一些边不会被染色,相当于在若干个连通块中染色,写出我们的贡献:
\(\sum_{t \in E} f(t) \times (-1)^{|S|-|T|}\)
\(f(t)\) 表示 \(t\) 中的集合没有被染色的方案数。
考虑带系数 dp。
设计状态 \(dp_{x}\) 表示 \(x\) 的子树中 \(\sum_{t \in E_{u}} f(t) \times (-1)^{|S|-|T|}\) 这里 \(E_{u}\) 代表其子树内的边集。
考虑把 \(y\) 合并到 \(x\) 上,考虑边 \((x,y)\) 是否要断:
-
如果选的话,\(t\) 集合大小加 \(1\),原来的值整体乘上 \(-1\)。
-
不选的话,原来的值不变,但是需要乘上 \(x,y\) 连通块内还连上的连通块之积的贡献,考虑加一维 \(dp_{x,i}\) 表示子树 \(x\) 且连着的连通块大小为 \(i\)。
需要计数连通块内自己选的方案。
LIS
dp of dp 可是我不会捏。
CF1909F2
放到平面上。
然后我再想想捏。
AT_agc001_e
考虑放到网格上转化为不降路径数 \(O(V^2)\) 递推,最后减去 \(i=j\) 然后除以二即可。
折线计数
从 \((0,0)\) 到 \((x,y)\) 网格图上的不下降路径计数。要求不能碰到直线 \(A,B\)。
考虑假若碰到第一条线就写下 \(A\),碰到第二条线就写下 \(B\),那么得到一个 \(AB\) 序列,将相同的颜色段合并,得到一个形如 \(ABABABAB...\) 与 \(BABABABA...\) 的段。
考虑把终点按第一条线翻折得到新的终点 \(P\),从 \((0,0)\) 到 \(P\) 的不下降路径就等价于所有形如 \(A\) 的路径,再对第二条直线作翻折得到点 \(P_1\),那么到 \(P_1\) 的路径就等价于所有形如 \(AB\) 的路径,类推下去可以得到所以以 \(A\) 开头的路径,以 \(B\) 开头的路径计数类似,最后用总数将其减去即可得到答案。