【完全背包】自然数拆分Lunatic版
题目:
给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复。求拆分的方案数mod 2147483648的结果。1 <= N <= 4000。
地址:
http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%BE%8B%E9%A2%98/5202%20%E8%87%AA%E7%84%B6%E6%95%B0%E6%8B%86%E5%88%86Lunatic%E7%89%88
题目解析:
首先题目有一个注意点,就是6 = 6不算6的拆分形式!
这里可以把每一个数字看成一种商品,每一个数字占用空间1,背包空间为N,因此将数字按照物品,套用完全背包的模板。
此处先将6 = 6算为6的一种拆分,最后再将结果-1,因为7 = 6+1,此处6就是6=6的拆分,因此应先将6=6算为6的一种拆分,即dp[0] = 1。
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const long long mod = 2147483648;ll dp[5000];int main()
{int n;while(~scanf("%d",&n)){memset(dp,0,sizeof(dp));dp[0] = 1;dp[1] = 0;for(int i = 1;i <= n;i++)for(int j = i;j <= n;j++) //每个数都能取无限次 dp[j] = (dp[j]+dp[j-i])%mod; //例如7 = 6+1,而6=6不是6的拆分,所以计算时应该将6 = 6算为6的拆分 cout<<(dp[n]>0?dp[n]-1:mod-1)<<endl; }return 0;
}
【完全背包】自然数拆分Lunatic版相关推荐
- 【背包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\)类数字凑成 ...
- 再练动态规划——(2)自然数拆分Lunatic版
自然数拆分Lunatic版 题目描述 输入自然数 nnn ,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数 nnn ,表示待拆分的自然数 nnn . 0< ...
- [JOYOI] 自然数拆分Lunatic版
题目背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强.题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复.输入格式 输入只有一个整 ...
- tyvj1172 自然数拆分Lunatic版
背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强. 描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数n ...
- 自然数拆分 Lunatic版 TYVJ1172(完全背包)
题目: 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式: 输入只有一个整数n,表示待拆分的自然数n. 1<=n<=4000 输出格式: 输出一个数,即 ...
- CHOJ 5202 自然数拆分Lunatic版 【完全背包模型】
描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结果.1≤N≤4000. 输入格式 一个整数n. 输出格式 输出一 ...
- 【题解】CH5202 自然数拆分Lunatic版 完全背包
题目链接 描述 给定一个自然数 NNN,要求把 NNN 拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648\mod 2147483648mod214 ...
- 【算法竞赛进阶指南】CH5202 自然数拆分Lunatic版 完全背包
给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复. 求拆分的方案数 mod 2147483648的结果. 输入格式 一个自然数N. 输出格式 输入一个整数,表示结果. ...
最新文章
- axure动态登录和html5,Axure8原型设计实战案例:如何实现登录功能?
- c++ softmax sigmoid
- android 从图片获取二维码
- Request.ServerVariables 参数大全
- flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
- 远控免杀专题(16)-Unicorn免杀
- python大神作品_Python大神的书单
- 使用数据绑定实现多窗口间的数据同步
- 基于C++和EasyX 实现的《双人贪吃蛇》小游戏,你不找个小伙伴陪你一起玩吗?
- 兄弟j220怎么清零_兄弟打印机MFC_J220墨水回收盒满,该如何清零,望大神指教。...
- VolTE注册流程0001 融合HLR HSS
- coolie —— 前端开发构建工具。
- Cesium 关于Bently模型的处理(dgn格式)
- 【LeetCode系列】数的奥秘之幂数与完全平方数
- 游戏中的道具与RMB玩家
- ubuntu14.04 下载安装 yocto平台
- java导出excel 序号_Java 实现导出excel表
- 定频APK--rftesttool的安装及设置步骤
- BCG 使用之CBCGPTreeCtrlEx控件
- 2022年第十二届APMCM亚太杯1月增赛E题思路分享
热门文章
- c位边上还有什么位_火箭少女海报一反常态,孟美岐取代yamy站C位,吴宣仪在边上...
- azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
- php try catch 作用域,浅谈PHP中try{}catch{}的使用方法
- aliyun redis 链接超时_超详细的Redis入门指导
- 3.自编码器(变分自编码器,VAE)
- 短网址算法 php,php实现的短网址算法分享
- fpt指的是什么_ftp是指的什么?
- C++:数组的输入、排序与去重操作
- mysql数据表备份_MySQL数据库备份之逻辑备份和物理备份概述
- swagger 上传文件 参数_跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义...