1 条题解
-
4
平方的组合意义是计数两个元素的有序对
考虑对于两个路径,如果有恰好 个交点,则对答案的贡献是 。
先拓扑排序,建一个源点和一个汇点,考虑 表示目前两条路径分别到了 ,长度分别是 ,到现在有 个交点,每次转移让 的较小值往前走一个点,认为 ,则复杂度 。
直接 dp 很难优化,考虑容斥,如果知道钦定了 个交点,容易反演出恰好 个交点的个数
设 表示两条路径在 处相交,长度分别是 ,到现在有 个交点,转移的时候枚举下一个交点 以及 到 的路径长度 ,可以转移到 ,转移系数是 ,其中 表示 到 的长度是 的路径条数。
这里 cnt 数组可以在 时间求出,dp 的复杂度变成了 。
考虑优化这个 ,发现转移系数里 是没有关系的,可以分两步转移,$dp(x,a,b,c)\rightarrow tmp(a+a',b)\rightarrow dp(y,a+a',b+b',c+1)$ 这样,减少一个 。
考虑答案怎么求,记 即钦定了 个交点的方案数,然后反演并算出答案。
注意到这里不必要求出所有 ,根据反演公式 $res'(c)=\sum_{c'\ge c}res(c')(-1)^{c'-c}\binom{c'}c$,以及对答案的贡献,可以算出式子 $\sum_{c}res'(c)k^{n-2l+1}\times k^x=k^{n-2l+1}\sum_{c}res(c)(k-1)^c$,可以发现 dp 里每让 那一位增加一就相当于 dp 值乘 ,于是总复杂度降到了 ,注意 的时候实现问题可能会求 的逆元,需要特判。
- 1
信息
- ID
- 96
- 时间
- 1500ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- 递交数
- 259
- 已通过
- 21
- 上传者