1201 整數劃分

2021-09-29 07:45:54 字數 730 閱讀 2269

題目鏈結

思維加dp

d p[

i][j

]dp[i][j]

dp[i][

j]表示數字i選擇j個數字組成,因為要j個數字,那麼我們看數字i−j

i - j

i−j由j個數字組成的個數,只需要這些數字每個數字增加1就可以變成i,這樣我們還差了一部分,我們還可以看數字i−j

i - j

i−j由j−1

j - 1

j−1個數字組成的個數,我們還是讓這j−1

j - 1

j−1個數字每個數都增加1,得到i−1

i - 1

i−1,j−1

j - 1

j−1的方案,我們在多放乙個1,就變成i

ii,j

jj**

#include

using namespace std;

const

int n =

5e4+4;

const

int mod =

1e9+7;

int dp[n]

[350];

signed

main()

}int ans =0;

for(

int i =

1; i <= m; i ++

) cout << ans << endl;

}

51nod 1201 整數劃分

將n分為若干個不同整數的和,有多少種不同的劃分方式,例如 n 6,共4種。由於資料較大,輸出mod 10 9 7的結果即可。1 n 50000 直接一看就想到是一道最簡單揹包問題 但n 50000 然後我就直接上揹包,結果毫無疑問的超時,然後我的乙個夥伴在打二維揹包暴力時手抖打錯打出了正解 我們設f...

51nod 1201 整數劃分

1201 整數劃分 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 將n分為若干個不同整數的和,有多少種不同的劃分方式,例如 n 6,共4種。由於資料較大,輸出mod 10 9 7的結果即可。input 輸入1個數n 1 n 50000 output 輸出劃分的數...

51nod 1201 整數劃分

dp轉移方程 dp i j dp i j j dp i j j 1 dp i j 表示將i分成j個不相等的數的個數。dp i j j dp i j 表示給原先的j個數各加一 dp i j j 1 dp i j 表示給原先的j 1的數加1,再附帶個1.因為不相等的數,所以n n 1 2 5e4 5,n...