UVa12325 12325 - Zombie‘s Treasure Chest(思路+代码)
题意:
给定一个容积为n的箱子,装两种宝物,每一种宝物有数量s和价值v这两个参数,问如何装才能使价值最大(输入均为32位带符号的整数)
思路
一开始肯定会想到贪心来找性价比高的,但是举个例子(n=100,s1=90,v1=90;s2=25,s2=24)此时物体1的性价比高,但是放了物体1才价值90,如果全部放物体2有价值96,所以不仅仅只看性价比,这个时候我们应该来枚举性价比低的那个物体(物体2),但是范围是多少??这个时候你是不是想到了一个范围(<=n/s2),没错,但是当n比较大s2比较小的时候你会发现(n/s2)数据就比较大了,枚举可能会超时,那我们还需要一个范围,仔细想想,物体1性价比高等价于(v1s2>=v2s1),此时我们枚举的又是物体2,聪明的你肯定发现,v2*s1中s1可以看成物体2的数量,这此时物体2的数量肯定不会超过s1,因为如果>=s2,那我们可以用性价比更好的物体1来代替,所以就又得到一个范围(<=s1-1);;当物体2性价比高的时候情况和上面类似。。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){ll t,i,n,ans=0,s1,s2,v1,v2,k=1;cin>>t;while(t--){ans=0;cin>>n>>s1>>v1>>s2>>v2;if(v1*s2>=v2*s1){//1性价比高,枚举2 for(i=0;i<=min(n/s2,s1-1);i++){ans=max(ans,i*v2+((n-i*s2)/s1)*v1);//总价值=(物体2价值+物体1价值)= i*v2+((n-i*s2)/s1)*v1)}}else {//2性价比高,枚举1for(i=0;i<=min(n/s1,s2-1);i++){ans=max(ans,i*v1+((n-i*s1)/s2)*v2);} }printf("Case #%lld: %lld\n",k++,ans);} return 0;
}
UVa12325 12325 - Zombie‘s Treasure Chest(思路+代码)相关推荐
- UVA 12325 Zombie's Treasure Chest
题目大意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 对于宝物1和2, ...
- UVA - 12325 Zombie's Treasure Chest 暴力
根据两种情况 选择不同枚举 哇! 这题开始用 int 类型的数写的,只有 存最大 价值量的 mix_ 用了long long ,结果交了一遍 wa ,查了一遍 没问题啊?? 后来意识到 max 函数 ...
- Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
题意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 分析: 分类枚举, ...
- UVa 12325 - Zombie's Treasure Chest(暴力枚举+预处理)
给出背包大小n,两种宝物的体积s1.s2,两种宝物的价值v1.v2.求能装下的最大价值. 首先进行预处理,使n/s1的值尽可能小,满足O(n)的时间不超时.s2的宝物1与s1个宝物2体积相同,所以s= ...
- Uva12325 Zombie's Treasure Chest [二分区间+模拟退火]
Zombie's Treasure Chest 题目链接 https://cn.vjudge.net/problem/UVA-12325 题意 两种物品无穷多个,第一种物品重量s1s_1s1,价值v ...
- UVA 12325 宝箱 Zombie‘s Treasure Chest
宝箱 Zombie's Treasure Chest 题面翻译 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1::宝物2的体积为S2,价值为V2.输入均为32位带符号整数. ...
- 【例题 7-11 UVA - 12325】Zombie's Treasure Chest
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 1.N/s1 < 1e6 枚举1的个数 2.N/s2<1e6 枚举2的个数 3.s1和s2的值较小 假设买了s2个1和s ...
- BZOJ2490 Zombie’s Treasure Chest
如果n = lcm(s1, s2),那么就可以直接得到maxV = (v / s1 * v1, v / s2 *v2) 然后还剩下一点体积我们暴力枚举用s1的量,让s1为max(s1, s2)可以减少 ...
- php论坛思路,PHP论坛实现积分系统的思路代码详解
PHP论坛实现积分系统的思路代码详解,积分,头像,等级,用户,字段 PHP论坛实现积分系统的思路代码详解 易采站长站,站长之家为您整理了PHP论坛实现积分系统的思路代码详解的相关内容. 首先在用户表定 ...
最新文章
- 通过a标签在页面上显示视频网站中的视频
- 单网段DHCP服务器的架设
- 042_Popconfirm气泡确认框
- 创建用于云支持的枢纽
- 反编译exe软件_【娱乐向】exe逆向工程(破译《游戏开发课》老师的成绩程序)...
- 谭浩强C语言程序设计 学习辅导练习题
- 洛谷P1173:[NOI2016] 网格(tarjan、离散化)
- 用C语言操作MySQL数据库
- LeetCode 1711. 大餐计数(map计数 + 二分查找)
- Memcache分布式部署方案
- 手把手教你启动若依微服务项目
- 识别同音字词pypinyin, 分词 jieba
- Atitis mybatis的功能api扩展总结 目录 1. MybatisAdvUtil	1 1.1. 根据session得到所有配置	1 1.2. Configuration1.getMappe
- 北京联通 烽火光猫+烽火HG680 不拆机破解
- 拉格朗日插值法与牛顿插值法
- 怎么修改PDF文件中的文字?快来学这两种方法
- 打开计算机不显示硬盘盘符,电脑硬盘不显示盘符怎么办 移动硬盘不显示盘符的原因...
- 给计算机老师的元旦祝福,元旦祝福语送老师_简短的送给老师的元旦祝福
- 《听闻远方有你》简谱-刘均演唱
- 官宣:教父级讲师李明加入尚硅谷