关于计数 dp 中 n 的 m 划分的理解

原创 2017年10月10日 22:43:57

问题表述

  • 有n个无区别的物品,将它们划分为不超过m组,求出划分方法数模M的余数。我们将这种划分记为 n 的 m 划分.
  • 这道题是挑战编程竞赛中 dp 专题里面的一道题, 上课的时候看了半天一直没明白为什么状态转移方程的推导是那个样子的. 回到实验室的时候看着别人的文章突然想明白了, 所以在这里记录一下.

解法

  • 我们将 dp[i][j] 定义为 j 的 i 划分.
  • 对于 n 的 m 划分来说, 其可以划分为{ai}, 这是一个由ai组成的集合, 其中mi=1ai=n, 然后我们讨论 {ai}的值的分布情况

ai{ai},ai>0

  • 此时, size({ai})=size({ai1})
  • 对此, 我们就有 n 的 m 划分就等价于 n-m 的 m 划分, 即有 dp[m][n] = dp[m][n-m]

ai{ai},ai=0

  • 只要存在一项 ai=0, 原问题其实就相当于 n 的 m-1 划分, 即 dp[m][n] = dp[m-1][n]
  • 这里或许会有人疑问, 为什么不考虑ai=0的项大于1的时候, 其实这里也是我上课的时候困惑的地方. 事实上, 多出来的ai=0 的项已经被包含在 n 的 m-个物品1划分中, 因为所谓的划分就是将 n 划分到不超过 m-1组中.

总结

  • 综上, dp 的转移方程为两种可能的相加, 即 dp[m][n] = dp[m-1][n] + dp[m][n-m], 我们就得到原问题的解啦.

参考

n 的 m 划分递推

版权声明:本文为博主原创文章,未经博主允许不得转载。

n的m划分 dp

计数问题的dp。   将n个无区别的物品,划分成不超过m组,求划分数。 如n=4,m=3,结果是4(1+1+2=1+3=2+2=4)   设dp[i][j]表示i的j划分,dp[i][j]=...
  • Twenty_seven
  • Twenty_seven
  • 2015年08月03日 18:48
  • 422

DP——划分子集和问题

对于由从1到N (1 例如,N=3时,可以将集合{1, 2, 3} 分为{1,2}和{3}。此时称有一种方式(即与顺序无关)。N=7时,共有四种方式可以将集合{1, 2, 3, ..., 7} 分为两...
  • code_AC
  • code_AC
  • 2016年04月04日 13:22
  • 930

题解:整数划分问题(DP)

总时间限制: 200ms 内存限制: 65536kB 描述 将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种...
  • sun897949163
  • sun897949163
  • 2016年07月31日 21:11
  • 680

N*M格子捡苹果DP算法python

直接代码: a = [[5, 8, 5, 7, 1, 8], [1, 3, 2, 8, 7, 9], [7, 8, 6, 6, 8, 7], [9, 9, 8, 1,...
  • feihuadao
  • feihuadao
  • 2015年03月31日 10:23
  • 1675

划分数, n的m划分 [dp计数] 《挑战程序设计竞赛》2.3

有n个无区别的物品,将它们划分为不超过m组,求出划分方法数模M的余数。限制条件:1≤m≤n≤10002≤M≤10000这样的划分被称作n的m划分,dp数组可以这么定义:dp[i][j]=j的i划分的总...
  • yoer77
  • yoer77
  • 2017年03月15日 20:17
  • 832

第七届蓝桥杯决赛JavaA组第六题_生成树计数

生成树计数   给定一个 n*m 的格点图,包含 n 行 m 列共 n*m 个顶点,相邻的顶点之间有一条边。 【图1.png】给出了一个3*4的格点图的例子。 如果在图中删除部分顶点和其相邻的边,如...
  • liutaotaotaotaotao
  • liutaotaotaotaotao
  • 2017年05月15日 20:13
  • 345

dp-整数划分问题(理论分析)

本题使用动态规划(Dynamic Programming)方法解决 一 求将n划分为若干正整数之和的划分数   1. 若划分的多个整数可以相同   设dp[i][j]为将i划分为不大于j的划...
  • u012349696
  • u012349696
  • 2014年09月24日 20:00
  • 864

状压dp - 棋盘问题(学习)

转载自:http://blog.csdn.net/math_coder/article/details/9671581 如果看不明白代码的位运算,请先了解下位运算的应用 **********此文章...
  • qq_33199236
  • qq_33199236
  • 2017年02月16日 11:26
  • 680

【划分型DP】整数划分

作为划分型DP中的基础题,在今天也算是完成了,对DP的用法也渐渐明朗起来。 题目描述 Description 将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。 例如:...
  • cg66570
  • cg66570
  • 2016年08月14日 21:52
  • 587

dp整数划分问题——03:复杂的整数划分问题

整数划分 :   这道好题求:   1. 将n划分成若干正整数之和的划分数。   2. 将n划分成k个正整数之和的划分数。   3. 将n划分成最大数不超过k的划分数。   4. 将n划分成若干奇正整...
  • curson_
  • curson_
  • 2016年07月22日 20:26
  • 578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于计数 dp 中 n 的 m 划分的理解
举报原因:
原因补充:

(最多只允许输入30个字)