51nod 1201:整数划分 超级好的DP题目
输入1个数N(1 <= N <= 50000)。
输出划分的数量Mod 10^9 + 7。
6
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题目相关推荐
- NYOJ90 整数划分(经典递归和dp)
整数划分 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk, 其中n1≥n2≥-≥nk≥1,k≥1. 正整数 ...
- 【51NOD】1201 整数划分
[题意]将n划分成不同正整数的和的方案数. [算法]动态规划 [题解] 暴力:f[i][j]:只用前1..i的数字,总和为j的方案数 本质上是01背包,前i个物体,总质量为j的方案数 f[i][j]= ...
- 整数划分(计数类DP)
题目 一个正整数 n 可以表示成若干个正整数之和,形如:n=n1+n2+-+nk,其中 n1≥n2≥-≥nk,k≥1. 我们将这样的一种表示称为正整数 n 的一种划分. 现在给定一个正整数 n,请你求 ...
- Acwing900. 整数划分[计数类dp]:完全背包解法
文章目录 题目分析 完全背包解法 题目链接 题目分析 完全背包解法 请复习完全背包模板完全背包dp优化内有完整标准完全背包的推导过程 状态表示: f[i][j]f[i] [j]f[i][j] 表示从 ...
- hdu 5230(整数划分,dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5230 解题思路: 这是一个整数划分的模型: 将n划分为k个整数的划分数 设dp[i][j]为将i划分为 ...
- 大概是:整数划分||DP||母函数||递推
整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...
- Gym - 100952H--H. Special Palindrome--dp整数划分(模板)
题目地址 A sequence of positive and non-zero integers called palindromic if it can be read the same forw ...
- HDOJ1028-Ignatius and the Princess III(整数划分)
整数划分: 整数N划分问题是一个组合数学的问题,要求将N划分成多个数的和,实际是将N个1切分成几块的问题,也可以说是在N个1的N-1个空档中插入K块挡板分割. 动态规划: dp[i][j],将i划分为 ...
- NYOJ-571 整数划分(三)
此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...
最新文章
- 牛客练习赛81 小Q与彼岸花 (分块+可持久化01trie)
- LVS nat 是否需要借助iptables 的snat实现负载均衡
- python绘图subplots函数使用模板
- 前端学习(1865)vue之电商管理系统电商系统之实现表单的数据绑定
- 新记录 Core 2 Duo E8600 被超频到6.25GHz
- Activity与Fragment生命周期
- 反向传播网络(BP 网络)
- 字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码
- 12.这就是搜索引擎:核心技术详解 --- 搜索引擎发展趋势
- [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值
- 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)
- STC单片机 定时器时钟FOSC 1T 12T、定时器模式
- pytorch nn.AdaptiveAvgPool2d(1)
- 问题 G: 学号识别
- 一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇
- 椭圆 标准方程 离心率 圆的标准方程
- 快速排序: 使用快速排序算法对数组进行排序
- Bootstrap3 缩略图( thumbnail )
- 学计算机惠普和联想笔记本哪个好,笔记本做得好,未必只有惠普和联想
- 20多年前微软曾计划收购,任天堂嘲讽道:“笑死我了”