2023.9.19
P3446 [POI2006] EST-Aesthetic Text
首先考虑最简单的DP,设 \(f_{i,j}\) 表示当前的最后一行是由 \((i-j+1,i)\) 的单词组成的,设
表示 \((i-j+1,i)\) 的单词组成一行的长度,则有DP
该DP的复杂度为 \(O(n^3)\) ,无法通过,于是考虑使用去绝对值的技巧
设
对于每次转移,因为 \(len_{i,j}\) 关于 \(j\) 单调递增,所以只需要找出使 \(len_{i-j,k}\leq len_{i,j}\) 的最大的 \(k\) ,此时 \(k\) 之前的全部小于等于 \(len_{i,j}\) , \(k\) 之后的全部大于 \(len_{i,j}\) ,于是转移就变成了 \(pre_{i-j,k}\) 的前缀 \(\min\) 加上 \(len_{i,j}\) , \(suf_{i-j,k+1}\) 的后缀 \(\min\) 减去 \(len_{i,j}\)
因为对于相同的 \(i-j\) , \(len_{i,j}\) 关于 \(i\) 单调递增,所以对于每个 \(i-j\) 维护一个指针即可,这样使复杂度降到 \(O(n^2)\) 可以通过本题
P6561 [SBCOI2020] 人
将所有的数分为 \(2i+1\) 和 \(2i+2\) ,对于每个 \(i\) 有三种情况
- \(2i+1\) 被选
- \(2i+2\) 被选
- 两个数都没被选
将这三种情况依次记为 \(A\) , \(B\) , \(C\) 那么我们就是要求一个含 \(a\) 个 \(A\) , \(b\) 个 \(B\) , \(m-a-b\) 个 \(C\) 的序列的个数,并且 \(A\) 不能排在 \(B\) 之后
先不考虑 \(A\) ,将 \(b\) 个 \(B\) 插入 \(C\) 之中,方案数为
然后考虑插入 \(A\) ,第一个 \(A\) 可以放在最前面买也可以放在任意一个 \(C\) 后面,有 \((m-a-b+1)\) 种可能,第二个 \(A\) 可以放在最前面,也可以放在任意一个 \(C\) 或前面的 \(A\) 之后,有 \((m-a-b+2)\) 种可能,以此类推,又因为每个 \(A\) 没有区别,所以总方案数为
最终方案数为
预处理阶乘和逆元即可

浙公网安备 33010602011771号