給定一個\(h \times w\) 大小的棋盤,其中有 \(n\) 個點為黑色。
每次只能向右或向下移動,求從 \((1,1)\) 不經過黑色點到達 \((h, w)\) 的方案數。
\(f(i)\) 表示到達第 \(i\) 個黑點的方案數,且在這之前都沒有經過黑點。
考慮補集。求有多少種方案經過了至少一個黑點。
列舉第一個黑點 \(j\)。需要滿足 \(x_j \le x_i,y_j \le y_i\)。那麼:
\[f(i) = \dbinom{x_i+y_i-2}{x_i-1} - \sum_{x_j \le x_i, y_j \le y_i}f(j) \times \dbinom {x_i-x_j+y_i-y_j}{x_i-x_j}
\]
強行加入第 \(n + 1\) 個黑點 \((h, w)\)。那麼答案為 \(f(n+1)\)。
事實上轉移順序不太好定。所以記憶化搜尋!
https://codeforces.com/contest/559/submission/291158046