[ABC259Ex] Yet Another Path Counting 做题记录
还是不够熟练。
题意简述
一个 $n\times n$ 的网格图,每个格子上有颜色,求满足起点和终点颜色均相同且只向下和向右走的路径条数。可以走 $0$ 步。$n\le 400$。
解法
- 设起点为 $(x,y)$ 终点为 $(z,w)$,则从 $(x,y)$ 到 $(z,w)$ 仅向下和向右走的路径条数为 $\dbinom{x-z+y-w}{x-z}$,可以理解为从起点到终点总共要走 $(x-z+y-w)$ 步,而其中有 $(x-z)$ 步是向下走的,这 $(x-z)$ 步可以在任意时刻走,所以相当于在 $(x-z+y-w)$ 步中选出 $(x-z)$ 步的方案数。
- 颜色之间是独立的,可以分开考虑。
- 对于每种颜色,枚举起点和终点,容易根据上式计算答案,时间复杂度 $O(n^4)$。
- 不过我们忽略了一种最朴素的解题思路。记 $f_{i,j}$ 为以 $(i,j)$ 结尾的合法路径条数,转移为 $f_{i,j}=f_{i,j}+f_{i,j-1}+f_{i-1,j}$。对于所有颜色为当前枚举的颜色的位置 $(i,j)$,初值为 $1$,否则为 $0$。对于每个颜色都要做一遍,时间复杂度 $O(n^4)$。
- 对于这种分颜色处理的问题,很经典的解决方式是对颜色出现次数进行根号分治。记阈值为 $B$,则最多有 $\dfrac {n^2}{B}$ 种颜色出现次数超过 $B$ 次,对这部分做 DP,而对出现次数小于 $B$ 次使用组合数计算。时间复杂度 $O(nB^2+\dfrac{n^4}{B})$,当 $B=n$ 时取到最优,为 $O(n^3)$。
Code
1 |
|
[ABC259Ex] Yet Another Path Counting 做题记录
https://www.llingy.top/posts/3648470459/