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 = 400左右就行。
#include #include#include
#include
using
namespace
std;
const
int maxn = 5e4+5
;const
int mod = 1e9+7
;int dp[maxn][400
];int
main()
}long
long ans = 0
;
for(int i=1;i<400;i++)
cout
return0;
}
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 整數劃分
題意 將n劃分成不同正整數的和的方案數。演算法 動態規劃 題解 暴力 f i j 只用前1.i的數字,總和為j的方案數 本質上是01揹包,前i個物體,總質量為j的方案數 f i j f i 1 j f i 1 j i 複雜度o n 2 優化 我們發現,因為要求數字不同,那麼數字最多也小於sqrt n...