划分数(动态规划(DP))
2017-08-29 17:05
253 查看
作者:码农场站主
链接:http://www.hankcs.com/program/m-n-recursive-division.html
有n个无区别的物品,将它们划分为不超过m组,求出划分方法数模M的余数。
限制条件:
1≤m≤n≤1000
2≤M≤10000
这样的划分被称作n的m划分,dp
dp 数组可以这么定义:
dp[i][j]=j 的i划分的总数。
递推关系的难点在于不重复。我们采用一种标准将问题化为子问题,这个标准需要用到一种新的定义。我们定义n的m 划分具体为一个集合ai,ai满足∑mi=1ai=n 。可以看出ai里一共有m个数,这m个数不一定大于0。
这个标准是:是否存在某个ai=0;这样可以将ai分为两种情况:
1、不存在某个ai=0
此时ai的个数等于ai−1的个数,即 n–m的m 划分。理解起来并不难,集合里每个数都减去1,一共减了m个。
此时dp[i][j]=dp[i][j−i] 。
2、存在某个ai=0
此时{a_i}的个数等于 n的m–1 划分。可以这样思考,存在ai=0,说明划分一定不足m组,那么至少可以少分一组同时满足划分数相同。
此时dp[i][j]=dp[i−1][j] 。
那么ai总的划分数就是这两种情况的综合,dp[i][j]=dp[i][j−i]+dp[i−1][j]。
int n,m;
int dp[MAX_M+1][MAX_N+1];
void solve()
{
dp[0][0]=1;
for(int i=1;i<=m;i++)
{
for(int j=0;j<=n;j++)
{
if(j-i>=0)
{
dp[i][j]=(dp[i-1][j]+dp[i][j-i])%M;
}
else
{
dp[i][j]=dp[i-1][j];
}
}
}
pintf("%d\n",dp[m]
);
}
链接:http://www.hankcs.com/program/m-n-recursive-division.html
原题
有n个无区别的物品,将它们划分为不超过m组,求出划分方法数模M的余数。限制条件:
1≤m≤n≤1000
2≤M≤10000
涉及知识及算法
这样的划分被称作n的m划分,dpdp 数组可以这么定义:
dp[i][j]=j 的i划分的总数。
递推关系的难点在于不重复。我们采用一种标准将问题化为子问题,这个标准需要用到一种新的定义。我们定义n的m 划分具体为一个集合ai,ai满足∑mi=1ai=n 。可以看出ai里一共有m个数,这m个数不一定大于0。
这个标准是:是否存在某个ai=0;这样可以将ai分为两种情况:
1、不存在某个ai=0
此时ai的个数等于ai−1的个数,即 n–m的m 划分。理解起来并不难,集合里每个数都减去1,一共减了m个。
此时dp[i][j]=dp[i][j−i] 。
2、存在某个ai=0
此时{a_i}的个数等于 n的m–1 划分。可以这样思考,存在ai=0,说明划分一定不足m组,那么至少可以少分一组同时满足划分数相同。
此时dp[i][j]=dp[i−1][j] 。
那么ai总的划分数就是这两种情况的综合,dp[i][j]=dp[i][j−i]+dp[i−1][j]。
代码
int n,m;int dp[MAX_M+1][MAX_N+1];
void solve()
{
dp[0][0]=1;
for(int i=1;i<=m;i++)
{
for(int j=0;j<=n;j++)
{
if(j-i>=0)
{
dp[i][j]=(dp[i-1][j]+dp[i][j-i])%M;
}
else
{
dp[i][j]=dp[i-1][j];
}
}
}
pintf("%d\n",dp[m]
);
}
相关文章推荐
- leetcode 312. Burst Balloons 气球爆炸计算分数 + 一个按照length做动态规划DP的很棒的做法
- 整数划分-划分数(DP动态规划)
- DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)
- 「动态规划」三维DP
- URAL 1119 Metro (DP动态规划)
- DP(动态规划) 铺瓷砖类问题poj等oj列表
- POJ 1837 Balance(DP动态规划)
- 【分数规划+DFS序上DP】BZOJ4753 [Jsoi2016]最佳团体
- [zz] POJ 动态规划DP题目列表
- <11> 继续动态规划(DP)
- 动态规划学习系列——数位DP(初识)
- hdu 2059 龟兔赛跑(动态规划DP)
- poj1661 Help Jimmy-dp动态规划
- 动态规划学习系列——划分DP(一)
- 3.4 熟练掌握动态规划——状态压缩DP
- 动态规划_区间DP
- hdu1421搬寝室DP(ACM题目,动态规划)
- [DP]BZOJ 1190——[HNOI2007]梦幻岛宝珠 动态规划]
- 动态规划 简单题dp
- POJ3624Charm Bracelet(动态规划(DP)01背包模板)