题目总结
CF 559 C - Gerald and Giant Chess
一道数学+DP 的 \(\color{#3498DB}\texttt{提高+/省选-}\) 题。
题目要求
求从 \((1,1)\) 点到 \((h,w)\) 点不经过黑色方格的路径数。
解题思路
观察数据范围,可以发现数据范围大概率与 \(n\) 有关。
首先,不考虑黑色方格,易发现路径数为 \(\mathrm{C}_{x+y-2}^{x-1}\)。
接下来考虑 DP,设 \(f_i\) 为从 \((1,1)\) 点到第 \(i\) 个黑色方格的路径数。根据减法原理,\((1,1)\) 点到第 \(i\) 个黑色方格的路径数为:\(\text{总路径数}-\text{经过的黑色方格的数量}\)。根据乘法原理,第 \(j\) 个黑色方格阻碍 \((1,1)\) 点到第 \(i\) 个方格的路径数为:\(f_j\times \mathrm{C}_{x_i+y_i-x_j-y_j}^{x_i-x_j}\ (x_i\ge x_j,y_i\ge y_j)\)。
所以,得到的状态转移方程为:
\[f_i=\mathrm{C}_{x+y-2}^{x-1}-\sum_{j=1}^{i-1}f_j\times \mathrm{C}_{x_i+y_i-x_j-y_j}^{x_i-x_j}\ (x_i\ge x_j,y_i\ge y_j)
\]
据此编写代码即可。
P.S. 这里 \(\mathrm{C}\) 的实现,需要用快速幂办法,而不是线性预处理。不然会 \(\color{#E74C3C}\texttt{WA}\) or \(\color{#9D3DCF}\texttt{RE}\)。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号