AtCoder ABC183E 字首和優化dp

2021-10-25 12:05:22 字數 847 閱讀 2151

原題

題意:給定乙個h*w的地圖,起點是(1,1),終點是(h,w)。地圖上『#』無法穿過,移動規則是向下、向右、向右下方移動,一次移動格數不限,就是不可以穿過『#』,現在為從起點到終點的方案(對1e9+7)取模。

思路很明顯的dp.dp[i][j]表示到第i行第j列的方案數,如果從左邊轉移過來的話就是 dp[i][j]+=dp[i][j-k] (k=1,2,3,…,j-1),如果map[i][j-k]=『#』就停下來,剩下兩個方向同理。但是這麼寫的話複雜度是o(n3),肯定超時,我們可以用字首和優化,cnt[k][i]j表示3個方向上的方案總數,每次算乙個dp[i][j]我們就更新cnt[k][i][j],這樣算下乙個dp[i][j]直接加上就行了。

ac**`

#include

using

namespace std;

typedef

long

long ll;

const

int mod =

1e9+7;

char mmap[

2005][

2005];

ll dp[

2005][

2005

], cnt[

2005][

2005][

3];int

main()

} dp[1]

[1]=

1ll;

for(

int i =

1; i <= n; i++

)else}}

cout << dp[n]

[m];

return0;

}

18 儲存過程

建立儲存過程 sql server 2000 以下例子使用的是jdbc driver2.0 企業管理器 儲存過程 建立儲存過程 例一 讀取資料的儲存過程 create procedure selectinfo asselect from dtree go在jsp中呼叫該儲存過程selectinfo方...

18 雜湊演算法

定義將任意長度的二進位制值串對映成固定長度的二進位制值串,這個對映的規則就是雜湊演算法,而通過原始資料對映之後得到的二進位制值串就是雜湊值。如何設計乙個優秀的雜湊演算法?1 單向雜湊 從雜湊值不能反向推導出雜湊值 所以雜湊演算法也叫單向雜湊演算法 2 篡改無效 對輸入敏感,哪怕原始資料只修改乙個bi...

18 選擇水果

lang en charset utf 8 titletitle select style head all multiple multiple 蘋果option 橘子option 梨option 西瓜option 水蜜桃option select type button value id btn1...