题目:

给定一个自然数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版相关推荐

  1. 【背包dp】自然数拆分Lunatic版

    Tyvj 1172 自然数拆分Lunatic版 题意:给定一个自然数n(1<= n <= 4000), 要求把自然数n拆分成n个正整数相加的情况(正整数可以重复出现, 但顺序不同仍视为同一 ...

  2. CH5202 自然数拆分Lunatic版【完全背包】

    5202 自然数拆分Lunatic版 0x50「动态规划」例题 描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结 ...

  3. TYVJ1172 自然数拆分Lunatic版 - 背包DP[完全背包]

    TYVJ1172 自然数拆分Lunatic版 传送门 思路: 类比TYVJ1096 数字组合 , 本题的数字可以重复使用,所以是一个完全背包模型.\(f[i,j]\)表示当前选到第\(i\)类数字凑成 ...

  4. 再练动态规划——(2)自然数拆分Lunatic版

    自然数拆分Lunatic版 题目描述 输入自然数 nnn ,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数 nnn ,表示待拆分的自然数 nnn . 0< ...

  5. [JOYOI] 自然数拆分Lunatic版

    题目背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强.题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复.输入格式 输入只有一个整 ...

  6. tyvj1172 自然数拆分Lunatic版

    背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强. 描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数n ...

  7. 自然数拆分 Lunatic版 TYVJ1172(完全背包)

    题目: 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式: 输入只有一个整数n,表示待拆分的自然数n. 1<=n<=4000 输出格式: 输出一个数,即 ...

  8. CHOJ 5202 自然数拆分Lunatic版 【完全背包模型】

    描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结果.1≤N≤4000. 输入格式 一个整数n. 输出格式 输出一 ...

  9. 【题解】CH5202 自然数拆分Lunatic版 完全背包

    题目链接 描述 给定一个自然数 NNN,要求把 NNN 拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod  2147483648\mod 2147483648mod214 ...

  10. 【算法竞赛进阶指南】CH5202 自然数拆分Lunatic版 完全背包

    给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复. 求拆分的方案数 mod 2147483648的结果. 输入格式 一个自然数N. 输出格式 输入一个整数,表示结果. ...

最新文章

  1. axure动态登录和html5,Axure8原型设计实战案例:如何实现登录功能?
  2. c++ softmax sigmoid
  3. android 从图片获取二维码
  4. Request.ServerVariables 参数大全
  5. flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
  6. 远控免杀专题(16)-Unicorn免杀
  7. python大神作品_Python大神的书单
  8. 使用数据绑定实现多窗口间的数据同步
  9. 基于C++和EasyX 实现的《双人贪吃蛇》小游戏,你不找个小伙伴陪你一起玩吗?
  10. 兄弟j220怎么清零_兄弟打印机MFC_J220墨水回收盒满,该如何清零,望大神指教。...
  11. VolTE注册流程0001 融合HLR HSS
  12. coolie —— 前端开发构建工具。
  13. Cesium 关于Bently模型的处理(dgn格式)
  14. 【LeetCode系列】数的奥秘之幂数与完全平方数
  15. 游戏中的道具与RMB玩家
  16. ubuntu14.04 下载安装 yocto平台
  17. java导出excel 序号_Java 实现导出excel表
  18. 定频APK--rftesttool的安装及设置步骤
  19. BCG 使用之CBCGPTreeCtrlEx控件
  20. 2022年第十二届APMCM亚太杯1月增赛E题思路分享

热门文章

  1. c位边上还有什么位_火箭少女海报一反常态,孟美岐取代yamy站C位,吴宣仪在边上...
  2. azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
  3. php try catch 作用域,浅谈PHP中try{}catch{}的使用方法
  4. aliyun redis 链接超时_超详细的Redis入门指导
  5. 3.自编码器(变分自编码器,VAE)
  6. 短网址算法 php,php实现的短网址算法分享
  7. fpt指的是什么_ftp是指的什么?
  8. C++:数组的输入、排序与去重操作
  9. mysql数据表备份_MySQL数据库备份之逻辑备份和物理备份概述
  10. swagger 上传文件 参数_跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义...