完全背包问题(f m)
完全背包的基础
完全背包可以说是建立在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)相关推荐
- DP算法-背包问题与线性DP问题(Acwing)
目录 一.何为DP 二.背包问题 1.01背包问题 2.完全背包问题 3.多重背包问题 三.线性DP问题(典型例题与总结) 1.数字三角形问题 2.最长上升子序列 3.最长上升子序列Ⅱ 4.最长公共子 ...
- codevs1163访问艺术馆(树形dp)
1163 访问艺术馆 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算 ...
- ACM入门之【DP】
DP全称动态规划,是算法中的重中之重. 目录 背包问题 01背包问题 完全背包 多重背包 分组背包 习题 线性DP 最长上升子序列 最长公共子序列 一个字符串修改后变成另一个字符串的最少步数 区间DP ...
- 数字三角形,最长上升子序列,背包模型 AcWing算法提高课 (详解)
目录 数字三角形模型(只能向右和向下或向左和向上) AcWing 1015. 摘花生 AcWing 1018. 最低通行费(曼哈顿距离-向右和向下-求最小值-初始化) AcWing 1027. 方格取 ...
- 杭电计算机研究生复试题
一.数据结构 线性存储和链式存储优缺点比较 1.1. 线性表的存储结构,优缺点 顺序存储结构可以直接存取数据元素,方便灵活.效率高,但插入.删除操作时将会引起元素的大量移动,因而降低效率. 链接存储结 ...
- 【OfferX】常见题目
编程要素 1.代码要完全对应思考的逻辑 每一个分支都要熟悉它是在做什么,对应的是哪一部分思考 2.考虑special case 常见的special case如下: i.整数的最大值: 2147483 ...
- 计算机考研复试面试问答整理(计算机网络、数据结构、操作系统、数据库、热点概念)
包含数据结构.计算机网络.操作系统.数据库.热点概念 数据结构 1.顺序存储和链式存储优缺点比较 ① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一):要求内存中可用存储单元的地址必须是连续 ...
- 背包问题状态转移方程
若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题: 如果不放第i件物品,则转化为"前i-1件物品放入容量为v的背包中",价值为f[i-1][v] ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
最新文章
- python 变量聚类 proc varclus_使用SAS进行简单的聚类分析讲解
- 邀请参加活动的邀请函_邀请函||王坝镇中心幼儿园邀请家长参加期中分享活动的通知...
- IT工程师必备的认证
- vba 将html转换excel,利用VBA将不同格式excel模板之间进行数据转换实例
- django-连接数据库mysql
- deepin20系统选择手动安装盘_深度系统Deepin 20最新正式版发布:全面升级
- 【转】企业网站建设方法论
- 数值计算方法(二)——复化求积公式
- 图解TCPIP-DHCP
- [转]asp.net 动态添加多附件上传
- 【论文写作】毕业论文写作的基本流程
- python3.6安装pyspider
- LLVM CLANG 3.1 GCC 4.7 INTEL CORE I7 BENCHMARKS
- 开水团2023届实习笔试
- centos7 开机自动启动程序
- 1.6 判断一个字符串是否由重复子字符串组成
- asp.net zero 8.2 学习-12- abp 文件上传、获取、删除
- 股票中的KD指标金叉和死叉
- ps2020无法显示最近打开
- 传统人工智能中的三大问题