279. 自然数拆分 完全背包问题
给定一个自然数 N,要求把 N 拆分成若干个正整数相加的形式,参与加法运算的数可以重复。
注意:
- 拆分方案不考虑顺序;
- 至少拆分成 2 个数的和。
求拆分的方案数 mod2147483648 的结果。
输入格式
一个自然数 N。
输出格式
输入一个整数,表示结果。
数据范围
1≤N≤4000
输入样例:
7
输出样例:
14
三维 超时
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL dp[N][N] , v[N] ;
int n , m ;int main()
{cin >> n ;dp[0][0] = 1;for(int i = 0 ; i <= n ; i++ ) v[i] = i;for(int i = 1 ; i < n ; i++ ){for(int j = 0 ; j <= n ; j++ ){for(int k = 0 ; k * v[i] <= j ; k++ ){dp[i][j] += dp[i-1][j - k * v[i]] ;dp[i][j] %= mod ;}}}cout<< dp[n-1][n] << endl;return 0;
}
二维 超时
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL dp[N][N] , v[N] ;
int n , m ;int main()
{cin >> n ;dp[0][0] = 1;for(int i = 0 ; i <= n ; i++ ) v[i] = i;for(int i = 1 ; i < n ; i++ ){for(int j = 0 ; j <= n ; j++ ){dp[i][j] = dp[i-1][j];dp[i][j] += dp[i][j - v[i]] ;dp[i][j] %= mod ;}}cout<< dp[n-1][n] << endl;return 0;
}
一维
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 4e3+10 , mod = 2147483648;
LL dp[N] ;
int n , m ;int main()
{cin >> n ;dp[0] = 1;for(int i = 1 ; i < n ; i++ ){for(int j = i ; j <= n ; j++ ){dp[j] += dp[j - i] ;dp[j] %= mod ;}}cout<< dp[n] << endl;return 0;
}
279. 自然数拆分 完全背包问题相关推荐
- 自然数拆分(完全背包问题求方案数)
给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复. 注意: 拆分方案不考虑顺序: 至少拆分成2个数的和. 求拆分的方案数 mod 2147483648的结果. 输入格式 ...
- [JOYOI] 自然数拆分Lunatic版
题目背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强.题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复.输入格式 输入只有一个整 ...
- 再练动态规划——(2)自然数拆分Lunatic版
自然数拆分Lunatic版 题目描述 输入自然数 nnn ,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数 nnn ,表示待拆分的自然数 nnn . 0< ...
- tyvj1172 自然数拆分Lunatic版
背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强. 描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数n ...
- 【背包dp】自然数拆分Lunatic版
Tyvj 1172 自然数拆分Lunatic版 题意:给定一个自然数n(1<= n <= 4000), 要求把自然数n拆分成n个正整数相加的情况(正整数可以重复出现, 但顺序不同仍视为同一 ...
- CH5202 自然数拆分Lunatic版【完全背包】
5202 自然数拆分Lunatic版 0x50「动态规划」例题 描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结 ...
- TYVJ1172 自然数拆分Lunatic版 - 背包DP[完全背包]
TYVJ1172 自然数拆分Lunatic版 传送门 思路: 类比TYVJ1096 数字组合 , 本题的数字可以重复使用,所以是一个完全背包模型.\(f[i,j]\)表示当前选到第\(i\)类数字凑成 ...
- 自然数拆分问题的解法与感悟(C++)
好吧,最近准备算法与程序设计竞赛(qwq我发现这个比赛的时候就离比赛时间没几天了好难),开始刷题了,刷到了这个自然数拆分的问题的问题,题目相对来说不难,但是对我来说还是有一些难度的,下面我就来说说这道 ...
- TVYJ1172 自然数拆分Lunatic版(完全背包问题)
测试地址:链接 题意描述:给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结果.1≤N≤4000. 输入格式: 一个整数 ...
最新文章
- .NET企业级应用架构设计系列之应用服务器
- MEMS为何独领风骚?看完这篇秒懂!
- A+B Problem 详细解答 (转载)
- Angular动态表单生成(八)
- 为项目添加autoprefixer
- mysql 查询超过60分钟的_mysql基础级《简单查询》60分钟搞定
- linux top 命令可视化_Linux 使用 top 命令查看系统的运行情况
- spark的异步消息总线LiveListenBus
- Docker入门系列(一):目标和安排
- 战争论 —— 蓝田之战
- Codeforces Round #449 (Div. 2) B Chtholly's request (预处理)
- 谷歌浏览器显示弹框登陆代理解决方法
- 百练2967:特殊日历计算题解
- 在SCI-Hub上下载国外论文
- ExcelVBA之InputBox方法
- python 编程控制键盘和鼠标
- 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
- 完美解决小米随身wifi创建网络失败
- 20年3月27日,Github被攻击。我的GitPage博客也挂了,紧急修复之路,也教会你搭建 Jekyll 博客!
- 上交计算机考研科目,2020上海交通大学计算机考研大纲