1201 整数划分
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题

 收藏
 关注

将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。
Input
输入1个数N(1 <= N <= 50000)。
Output
输出划分的数量Mod 10^9 + 7。
Input示例
6
Output示例
4

这个DP想得真叫我累啊,还想不出来。后来问了夹克老师,发现这个DP真是经典啊。

用dp[i][j]表示j个数组成i的个数。那么对于dp[i][j]每一个j来说,注意是对于每一个j来说,来源就是两个,一个就是插入j时的dp[i-j][j-1]个数。

然后就是因为要不同整数,不同的来源在哪里,就是将[i-j][i](其含义是i个数组成了i-j)中的每一个数加1,这点这是奇妙啊,就组成了dp[i][j]的剩余部分。

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

这个题真是好题。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std;const int maxn = 50000 + 100;
const int mod = 1e9 + 7;
int dp[maxn][350];int main()
{//freopen("i.txt","r",stdin);//freopen("o.txt","w",stdout);int n;scanf("%d", &n);dp[0][0] = 1;for (int i = 1; i<7; i++){for (int j = 0; j <= n; j++){if (j - i >= 0)dp[j][i] = (dp[j - i][i] + dp[j - i][i - 1]) % mod;}}int ans = 0;for (int i = 1; i<350; i++)ans = (ans + dp[n][i]) % mod;cout << ans << endl;return 0;
}

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

转载于:https://www.cnblogs.com/lightspeedsmallson/p/4899559.html

51nod 1201:整数划分 超级好的DP题目相关推荐

  1. NYOJ90 整数划分(经典递归和dp)

    整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk,  其中n1≥n2≥-≥nk≥1,k≥1.  正整数 ...

  2. 【51NOD】1201 整数划分

    [题意]将n划分成不同正整数的和的方案数. [算法]动态规划 [题解] 暴力:f[i][j]:只用前1..i的数字,总和为j的方案数 本质上是01背包,前i个物体,总质量为j的方案数 f[i][j]= ...

  3. 整数划分(计数类DP)

    题目 一个正整数 n 可以表示成若干个正整数之和,形如:n=n1+n2+-+nk,其中 n1≥n2≥-≥nk,k≥1. 我们将这样的一种表示称为正整数 n 的一种划分. 现在给定一个正整数 n,请你求 ...

  4. Acwing900. 整数划分[计数类dp]:完全背包解法

    文章目录 题目分析 完全背包解法 题目链接 题目分析 完全背包解法 请复习完全背包模板完全背包dp优化内有完整标准完全背包的推导过程 状态表示: f[i][j]f[i] [j]f[i][j] 表示从 ...

  5. hdu 5230(整数划分,dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5230 解题思路: 这是一个整数划分的模型: 将n划分为k个整数的划分数 设dp[i][j]为将i划分为 ...

  6. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

  7. Gym - 100952H--H. Special Palindrome--dp整数划分(模板)

    题目地址 A sequence of positive and non-zero integers called palindromic if it can be read the same forw ...

  8. HDOJ1028-Ignatius and the Princess III(整数划分)

    整数划分: 整数N划分问题是一个组合数学的问题,要求将N划分成多个数的和,实际是将N个1切分成几块的问题,也可以说是在N个1的N-1个空档中插入K块挡板分割. 动态规划: dp[i][j],将i划分为 ...

  9. NYOJ-571 整数划分(三)

    此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...

最新文章

  1. 牛客练习赛81 小Q与彼岸花 (分块+可持久化01trie)
  2. LVS nat 是否需要借助iptables 的snat实现负载均衡
  3. python绘图subplots函数使用模板
  4. 前端学习(1865)vue之电商管理系统电商系统之实现表单的数据绑定
  5. 新记录 Core 2 Duo E8600 被超频到6.25GHz
  6. Activity与Fragment生命周期
  7. 反向传播网络(BP 网络)
  8. 字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码
  9. 12.这就是搜索引擎:核心技术详解 --- 搜索引擎发展趋势
  10. [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值
  11. 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)
  12. STC单片机 定时器时钟FOSC 1T 12T、定时器模式
  13. pytorch nn.AdaptiveAvgPool2d(1)
  14. 问题 G: 学号识别
  15. 一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇
  16. 椭圆 标准方程 离心率 圆的标准方程
  17. 快速排序: 使用快速排序算法对数组进行排序
  18. Bootstrap3 缩略图( thumbnail )
  19. 学计算机惠普和联想笔记本哪个好,笔记本做得好,未必只有惠普和联想
  20. 20多年前微软曾计划收购,任天堂嘲讽道:“笑死我了”

热门文章

  1. 解决Lync Server 2013无法共享演示PPT
  2. 11g CRS 磁盘选择external,normal,high
  3. 局域网与网络工程课堂笔记(1)(2)
  4. 子网掩码的计算与划分详解
  5. Dell遇载软件出问题!可能被安装软件含有病毒
  6. CPSR和SPSR(转)
  7. Azure SQL Database (19) Stretch Database 概览
  8. DB2定时清理归档日志脚本
  9. Lombok 原理分析与功能实现
  10. 浅析Node模块中module.exports与exports的关系