openOJ 2045 分解数字(DP)
2014-06-20 16:08
225 查看
题目链接:http://openoj.awaysoft.com/JudgeOnline/problem.php?id=2045
题意:将n分解成若干个不相同数字之和。有多少种分法?
思路:dp[i][j]表示将i分解成j个数字之和。那么:
(1)j个数字中有1,dp[i][j]=dp[i-(j-1)-1][j-1],也就是将i-(j-1)-1分成的j-1个数字都加1,并且再增加一个数字1,共j个数字;
(2)j个数字中没有1,dp[i][j]=dp[i-j][j],也就是将i-j分成的j个数字都加1。
题意:将n分解成若干个不相同数字之和。有多少种分法?
思路:dp[i][j]表示将i分解成j个数字之和。那么:
(1)j个数字中有1,dp[i][j]=dp[i-(j-1)-1][j-1],也就是将i-(j-1)-1分成的j-1个数字都加1,并且再增加一个数字1,共j个数字;
(2)j个数字中没有1,dp[i][j]=dp[i-j][j],也就是将i-j分成的j个数字都加1。
int dp [320],ans ; void init() { int i,j; for(i=3;i<=50000;i++) { dp[i][1]=1; dp[i][2]=(i-1)/2; ans[i]=dp[i][2]; for(j=3;j*(j+1)/2<=i;j++) { dp[i][j]=(dp[i-j][j]+dp[i-j][j-1])%mod; ans[i]=(ans[i]+dp[i][j])%mod; } } } int n; int main() { init(); rush() { RD(n); PR(ans ); } return 0; }
相关文章推荐
- UVa 10313 Pay the Price(类似数字分解DP)
- UVA 10313 Pay the Price(数字分解DP)
- Vampire Numbers 数字的合理分解
- BZOJ 1833 [ZJOI 2010] 数字统计 (数位DP)
- 【dp】数字三角形问题
- Q - count 数字计数 (数位dp)
- nefu1018数字游戏二【DP】
- OJ3RD 1157 合并相邻数字 - DP
- [省选] [数位DP] [HLOI2016] 幸运数字
- 【DP】数字三角形4
- codevs 1085 数字游戏 (环形区间dp+负数取膜)
- LightOJ 1004 Monkey Banana Problem (线性dp 数字菱形)
- bzoj 1833: [ZJOI2010]count 数字计数【数位dp】
- 将一个n位数分解为各个位数的数字。
- 数字三角形 (简单DP)
- 【DP】组合数字
- 数位DP(数字和与倍数,uva 11361)
- 51nod 1042 数字0-9的数量【数位dp】
- HDU 2045不容易系列之三LELE的RPG难题(趋向于DP的递推)
- 1833: [ZJOI2010]count 数字计数 数位dp