<span>省选模拟83 题解</span>
A. table
首先考虑怎么暴力 dp,然后发现难点在于怎么知道不受影响的格点的个数。
其实特殊之处在于碰到矩形边界之后没办法计数,所以考虑枚举在哪个位置碰到了矩形边界。
然后发现每次转移是类似的,只要求 $a$ 次向下走,$b$ 次向右走,$c$ 次在边界上走能贡献的总的权值。
其实等价于求所有满足 $x_1+...+x_a+y_1+...+y_b+z_1+...+z_c=S$ 的序列的权值 $x_1*...*x_a*(y_1+1)*...*(y_b+1)$ 的权值和。
其中 $x,y,z$ 的取值都可以是 $0$ ,然而容易发现如果 $x$ 在取值为 $0$ 的时候不产生贡献,可以钦定取值至少为 $1$ 。
然后把 $y+1$ 这个东西转化一下,给等号的右边加上一个 $b$ ,现在的权值就变成了 $x_1*...*x_{a+b}$,这个可以直接用插板来计算。
然后发现其实是左右分别插板,然后组合数的形式是 $\sum \limits_{i=-\infty}^{\infty}\binom{a+i}{b}\binom{c-i}{d}$。
这个东西可以转化为在枚举集合的划分点,所以组合数就等于 $\binom{a+c+1}{b+d+1}$,然后只要考虑一下没有被经过的点的贡献、经过的不同路径产生的方案数的贡献就好了。
B. remove
直接用完全图的话,没有办法进行 dp。
然后有这样一个结论:原题等价于求最大独立集。
证明的话可以考虑首先答案是要大于等于最大独立集的。
然后把最大独立集中的每一个元素都先选中,可以考虑如果加入两个不在最大独立集中的元素之后不能形成团,那就说明新加的两个元素之间没有边。
如果这样的话,可以用这新加的两个元素替换原最大独立集中的元素,那么最大独立集可以扩大,就不是最大独立集。
可以考虑把每个符卡都按照左上角的坐标排序,然后最大独立集是不难 dp 的。
转移的条件就是两个右端点分别小于两个左端点。
因为上方的左端点是递增的,可以用堆来动态插入可以进行转移的点。
下方的偏序关系用树状数组维护即可。