window.cnblogsConfig = {//可以放多张照片,应该是在每一个博文上面的图片,如果是多张的话,那么就随机换的。 homeTopImg: [ "https://cdn.luogu.com.cn/upload/image_hosting/xkzro04i.png" ], }

题目总结

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}\)

提交记录

posted @ 2024-02-23 23:43  TigerTanWQY  阅读(11)  评论(0)    收藏  举报