n的m划分

  • 将n划分成若干个不超过m的数(正整数)的和,问有几种划分情况。

现在根据n和m的关系,考虑下面几种情况:

  1. 当n=1时,不论m的值为多少,只有一种划分,即{1};
  2. 当m=1时,不论n的值为多少,只有一种划分,即{1,1,1,....1,1,1}划分成n个1;
  3. 当n==m时,(a)划分中不包含n的情况,即n的n-1的划分f(n,n-1);(b)其他情况就是包含n的划分,只有1个,即{n};
  4. 当n>=m时,(a)划分中不包含m的情况,即n的n-1划分f(n,m-1);(b)其他情况就是包含m的划分,即{x1,x2,x3,x4,...,xi,m},也就是n-m的m划分f(n-m,m);
  5. 当n<m时,因为划分不会出现负数,因此也就是n的n划分。

综上的递推表达式为:

for(int i=; i<=n; i++)
{
for(int j=; j<=i; j++)
{
if(i==||j==) dp[i][j]=;
else
{
if(j==i) dp[i][j]=dp[i][j-]+;
else if((i-j)<j)
dp[i][j]=dp[i-j][i-j]+dp[i][j-];
else
dp[i][j]=dp[i-j][j]+dp[i][j-];
}
}
}
  • 将n划分成不超过m个数(正整数)的和,问有几种情况。

dp[i][j]表示j的i划分。

考虑n的m划分,如果对于每一个i都有xi>0,那么{xi-1}就对应了n-m的m划分。另外如果存在xi=0,那么就对应了n的m-1划分。

综上所述,对推关系:

dp[i][j]=dp[i][j-i]+dp[i-1][j]

dp[][]=;
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
if((j-i)>=) dp[i][j]=(dp[i-][j]+dp[i][j-i])%mod;
else dp[i][j]=dp[i-][j];
}
}

n的m划分 整数拆分问题的更多相关文章

  1. HDU 4651 Partition(整数拆分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){    f[0 ...

  2. LightOJ 1336 Sigma Function(数论 整数拆分推论)

    --->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...

  3. LightOJ 1341 Aladdin and the Flying Carpet(整数拆分定理)

    分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ...

  4. HDU1028 (整数拆分)

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  5. 整数拆分问题_C++

    一.问题背景  整数拆分,指把一个整数分解成若干个整数的和 如 3=2+1=1+1+1  共2种拆分 我们认为2+1与1+2为同一种拆分 二.定义 在整数n的拆分中,最大的拆分数为m,我们记它的方案数 ...

  6. Pollard-Rho大整数拆分模板

    随机拆分,简直机智. 关于过程可以看http://wenku.baidu.com/link?url=JPlP8watmyGVDdjgiLpcytC0lazh4Leg3s53WIx1_Pp_Y6DJTC ...

  7. poj3181【完全背包+整数拆分】

    题意: 给你一个数n,在给你一个数K,问你这个n用1-k的数去组合,有多少种组合方式. 思路: 背包重量就是n: 那么可以看出 1-k就是重物,价值是数值,重量是数值. 每个重物可以无限取,问题转化为 ...

  8. HDU 1028 Ignatius and the Princess III(母函数整数拆分)

    链接:传送门 题意:一个数n有多少种拆分方法 思路:典型母函数在整数拆分上的应用 /********************************************************** ...

  9. LeetCode 343. 整数拆分(Integer Break) 25

    343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ...

随机推荐

  1. [UNITY 5.4 UGUI] 模态对话框

    1.建立两个画布 a.背景界面 b.置顶界面(添加一个 panel 控件) 2.修改置顶界面中 panel ,添加属性 [Canvas Group] 3.根据界面设计情况修改透明度,色彩,图片

  2. HDU - 3567

    https://cn.vjudge.net/problem/HDU-3567 #include <stdio.h>#include <math.h>#include <q ...

  3. DOM编程艺术章12:一个简单的Ajax例子

    大概入了JavaScript的门,现在要回过头恶补Ajax和json了,随手翻到dom编程艺术发现有一个适合回忆的例子,先抄录下来,引入对Ajax作用的大概印象,再去掰开了研究. <!DOCTY ...

  4. UBNT ex-r +netgear gs105e v2 +ap 设置vlan 步骤记录 及相关知识整理

    设备连接:路由器ex-r的eth0 连接 光猫拨号,eth3连接交换机gs105e,交换机gs105e的eth3连接无线ap 需求:路由器拨号上网,通过不同ssid的无线网络可以连接不同vlan,且交 ...

  5. Unable to docker login through CLI - unauthorized: incorrect username or password

    Unable to docker login through CLI - unauthorized: incorrect username or password To solve it proper ...

  6. mysql--构造数据、导入导出

    一.mysql造数据脚本     DELIMITER $$ DROP PROCEDURE IF EXISTS `test3`$$ CREATE     /*[DEFINER = { user | CU ...

  7. Debian 安装 virtualbox

    首先增加源: echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" > /e ...

  8. python运行时参数m的作用

    不加m时,当前目录是py文件的所在目录 加m时,当前目录就是当前目录

  9. Spring再接触 生命周期

    Userservice.java package com.bjsxt.service; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.Use ...

  10. jsp Servlet 文件上传

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...