完全背包的基础


完全背包可以说是建立在01背包基础之上的,这两个是最基本的背包问题,先来道题。
Problem Description
小P非常喜欢玩dota,不分昼夜的玩
,结果他连做梦也都是里面的画面,一天晚上小P刚躺下就做了一个神奇的梦。。。
不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.
死亡骑士:”我要买道具!”
地精商人:”我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个.”
死亡骑士:”好的,给我一个血瓶.”
说完他掏出那张N元的大钞递给地精商人.
地精商人:”我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿.”
死亡骑士:”……”
死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.
现在死亡骑士感觉自己的智商不够用所以希望小P帮他计算一下,最少他要给地精商人多少小费.但是小P的智商可是出了名的“不忍直视”啊,聪明非凡的你所以你能帮帮他吗?
Input
输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值.

注意:地精商店只有题中描述的三种道具.
Output
对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.

Example Input

2
380
200

Example Output

30
0

呜喵王,第一任的耐奥祖,是个兽族萨满,第二个是阿尔萨斯(虽然很多人都说不算,可是比我挺喜欢他的),人族洛丹伦王子,第三任伯瓦尔,人族圣骑。。。。(牺牲自我变做巫妖王)所以说呢,呜喵王。。。。(⊙o⊙)…扯远了,好了,让我们来看看这个题吧。。。。
先来说说我们的完全背包的思想,首先最重要的状态转移方程,和01背包也差不多:dp[j] = max(k*dp[j],k*dp[j-w[i]] + p[i])。没错就是这个,不过呢,这个k显然是不容易得到的,所以呢。。。。。我们就假装不知道这个k,让它自己装,撞到装不下为止,而且呢,给你一定容量的袋子,让你去装一堆宝石,一堆金子,一堆银子,你肯定先把宝石装完,装完后再装金子。。。。。。。。一定要牢牢记住这一条!!!
好了,来看看代码

#include <stdio.h>
#include <string.h>
int max(int a,int b)
{return a>b?a:b;
}
int main()
{int n;scanf("%d",&n);while(n--){int m;scanf("%d",&m);int p[5];p[1] = 150;p[2] = 200;p[3] = 350;int dp[10010];memset(dp,0,sizeof(dp));int i,j;for(i=1;i<=3;i++)for(j=p[i];j<=m;j++){dp[j] = max(dp[j],dp[j - p[i]] + p[i]);}int s = m - dp[m];printf("%d\n",s);}
}

可以看出,和01背包不太一样的是这里第二个嵌套的for循环是一个正序的改变,因为这里你要记住,这个不需要向往常一样,逆推,当我们把当前状态处理好后再去处理下一个状态,而不是这个状态由上一个或者前面那个比较后得到。。。。

完全背包问题(f m)相关推荐

  1. DP算法-背包问题与线性DP问题(Acwing)

    目录 一.何为DP 二.背包问题 1.01背包问题 2.完全背包问题 3.多重背包问题 三.线性DP问题(典型例题与总结) 1.数字三角形问题 2.最长上升子序列 3.最长上升子序列Ⅱ 4.最长公共子 ...

  2. codevs1163访问艺术馆(树形dp)

    1163 访问艺术馆  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算 ...

  3. ACM入门之【DP】

    DP全称动态规划,是算法中的重中之重. 目录 背包问题 01背包问题 完全背包 多重背包 分组背包 习题 线性DP 最长上升子序列 最长公共子序列 一个字符串修改后变成另一个字符串的最少步数 区间DP ...

  4. 数字三角形,最长上升子序列,背包模型 AcWing算法提高课 (详解)

    目录 数字三角形模型(只能向右和向下或向左和向上) AcWing 1015. 摘花生 AcWing 1018. 最低通行费(曼哈顿距离-向右和向下-求最小值-初始化) AcWing 1027. 方格取 ...

  5. 杭电计算机研究生复试题

    一.数据结构 线性存储和链式存储优缺点比较 1.1. 线性表的存储结构,优缺点 顺序存储结构可以直接存取数据元素,方便灵活.效率高,但插入.删除操作时将会引起元素的大量移动,因而降低效率. 链接存储结 ...

  6. 【OfferX】常见题目

    编程要素 1.代码要完全对应思考的逻辑 每一个分支都要熟悉它是在做什么,对应的是哪一部分思考 2.考虑special case 常见的special case如下: i.整数的最大值: 2147483 ...

  7. 计算机考研复试面试问答整理(计算机网络、数据结构、操作系统、数据库、热点概念)

    包含数据结构.计算机网络.操作系统.数据库.热点概念 数据结构 1.顺序存储和链式存储优缺点比较 ① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一):要求内存中可用存储单元的地址必须是连续 ...

  8. 背包问题状态转移方程

    若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题: 如果不放第i件物品,则转化为"前i-1件物品放入容量为v的背包中",价值为f[i-1][v] ...

  9. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

最新文章

  1. python 变量聚类 proc varclus_使用SAS进行简单的聚类分析讲解
  2. 邀请参加活动的邀请函_邀请函||王坝镇中心幼儿园邀请家长参加期中分享活动的通知...
  3. IT工程师必备的认证
  4. vba 将html转换excel,利用VBA将不同格式excel模板之间进行数据转换实例
  5. django-连接数据库mysql
  6. deepin20系统选择手动安装盘_深度系统Deepin 20最新正式版发布:全面升级
  7. 【转】企业网站建设方法论
  8. 数值计算方法(二)——复化求积公式
  9. 图解TCPIP-DHCP
  10. [转]asp.net 动态添加多附件上传
  11. 【论文写作】毕业论文写作的基本流程
  12. python3.6安装pyspider
  13. LLVM CLANG 3.1 GCC 4.7 INTEL CORE I7 BENCHMARKS
  14. 开水团2023届实习笔试
  15. centos7 开机自动启动程序
  16. 1.6 判断一个字符串是否由重复子字符串组成
  17. asp.net zero 8.2 学习-12- abp 文件上传、获取、删除
  18. 股票中的KD指标金叉和死叉
  19. ps2020无法显示最近打开
  20. 传统人工智能中的三大问题

热门文章

  1. Oracle EBS Interface/API(30) -PR取消API
  2. 初步探究Android App API接口测试--实战
  3. matlab函数merge_MATLAB数据合并方法
  4. netty系列之:请netty再爱UDT一次
  5. 全程干货!人物设计是什么?如何设计出好看的人物?
  6. 数字图像处理学习笔记(一)
  7. 【新番尝鲜】续 夏目友人帐——再续祖传的本子
  8. 关于128x64OLED屏幕字体类型以及字体大小添加方法
  9. 如何解决”/”应用程序中的服务器错误
  10. 支持向量机SMO算法