Problem C 985的方格難題(dp

2021-07-16 12:14:04 字數 1127 閱讀 3882

time limit: 1 sec  

memory limit: 128 mb

submit: 425  

solved: 93

submit

status

web board

985走入了乙個n * n的方格地圖,他已經知道其中有乙個格仔是壞的。現在他要從(1, 1)走到(n, n),每次只可以向下或者向右走一步,問他能否到達(n,n)。若不能到達輸出-1,反之輸出到達(n,n)的方案數。

第一行輸入乙個整數t,代表有t組測試資料。

每組資料第一行輸入三個整數n,x,y,分別代表方格地圖的大小以及壞掉格仔的位置。

注:1 <= t <= 20,1 <= n <= 30,1 <= x,y <= n。

若可以到達(n,n)則輸出方案數對1e9 + 7取餘的結果,反之輸出-1。

2

2 1 2

2 2 2

1

-1

解法一:考慮dp,dp[i][j]表示到達位置(i,j)的方案數,

dp[i][j] = -1 表明該位置未被訪問,直接暴力轉移就可以啦。

時間複雜度:o(t * n * n)。

解法二:拋開壞的位置不說,發現從(1,1)到達每個位置的方案數都是楊輝三角裡面的某個組合數。

而且達到位置(n, m)的方案數是c(n + m - 2,m - 1)。

記ans[1][1][n][m]為(1,1)到(n,m)的方案數。

這樣結果就是ans[1][1][n][n] - ans[1][1][x][y] * ans[x][y][n][n]。防止出錯,要用逆元。

時間複雜度:o(t * log(1e9 + 5)^4)。

[cpp]view plain

copy

print

?

#include

intmap[32][32];  

intmain()   

}  }  

printf("%d\n"

,map[n][n]==0?-1:map[n][n]);  

}  return

0;  

}  

985系列 985的方格難題

time limit 1 sec memory limit 128 mb submit 450 solved 99 submit status web board 985走入了乙個n n的方格地圖,他已經知道其中有乙個格仔是壞的。現在他要從 1,1 走到 n,n 每次只可以向下或者向右走一步,問他能...

zzuli oj 985的方格難題(DP)

time limit 1 sec memory limit 128 mb submit 379 solved 80 submit status web board 985走入了乙個n n的方格地圖,他已經知道其中有乙個格仔是壞的。現在他要從 1,1 走到 n,n 每次只可以向下或者向右走一步,問他能...

985的買飲料難題

time limit 1 sec memory limit 128 mb submit 221 solved 118 submit status web board 天氣太熱了,985制定了對未來的規劃即第i天喝a i 瓶飲料。為了節約開支,他打聽到了第i天每瓶飲料的 p i 為了不讓自己的規劃落空...