51NOD 1201 整数划分
来源:互联网 发布:支持 https的域名.me 编辑:程序博客网 时间:2024/05/18 16:55
题目链接:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1201
题解:
一道很好的dp题目,首先我们先要明确dp的含义。这里开的是二维dp,表示i这个数划分为j个数的方案数。(这里j表示的不是max值)
当我们对其进行划分的时候,可以这么去想,我们要把一个数划分为4的时候,那么就相当于在(N-4)这个的基础上这些数进行加1的操作。但是坑点就是遇到0的时候,需要去掉它。
因此,我们可以推断出这个的转移方程为:dp[i][j]=dp[i-j][j]+d[i-j][j-1];后者是指遇到0的情况的时候,去掉0。
代码:
#include <cmath>#include <cstdio>#include <map>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define met(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3fconst int maxn =5e4+10;const int mod = 1e9+7;int dp[maxn][320];int main(){ int n; scanf("%d",&n); met(dp,0); dp[0][0]=1; for(int i=1;i<=n;i++) { for(int j=1;j*j<2*i;j++) { dp[i][j]=(dp[i-j][j-1]+dp[i-j][j])%mod; } } int ans=0; for(int i=1;i<=n;i++) { ans=(ans+dp[n][i])%mod; } printf("%d\n",ans);}
阅读全文
0 0
- [51nod 1201]整数划分
- 51nod 1201 整数划分
- 51nod-1201 整数划分
- 51Nod-1201-整数划分
- 51nod 1201 整数划分
- 【51Nod 1201】 整数划分
- 【51nod 1201】 整数划分
- 51Nod 1201 整数划分
- 51NOD 1201 整数划分
- 整数划分 51Nod
- [DP 数论] 51Nod 1201 整数划分
- 51nod 1201 整数划分 dp
- 51nod 1201 整数划分(dp)
- 【dp】51nod 1201 整数划分
- 51 nod 1201 整数划分(dp)
- 51nod 1201[整数划分] 1259[整数划分V2] 1597 [有限背包计数问题]
- 51nod 1201 整数划分(锻炼思维的好题)
- 51nod 1201:整数划分 超级好的DP题目
- Array常用方法
- Caffe Matlab feature extraction 特征提取
- 单片机C语言的主程序,通常要用一个while(1)语句来让程序进入一个无限循环,目的是为了让程序一直保持在我们需要运行的情况下。 虽然这种做法毋庸置疑,在网上还是有不少朋友有疑问,如果程序不加wh
- win7声音图标不见,此图标当前处于未活动状态
- 图片风格转移-转载
- 51NOD 1201 整数划分
- Mac下安装及配置Eclipse
- Websocket接口性能测试方法
- git综合
- Java学习笔记day2(Java基本概念)
- webpack 全程学习记录! (前端自动化构建工具)
- iOS-UITableView的两种重用Cell方法的区别(dequeueReusableCellWithIdentifier)
- daemon进程AF模块
- 关于CSDN博客域名