给出背包大小n,两种宝物的体积s1、s2,两种宝物的价值v1、v2。求能装下的最大价值。

首先进行预处理,使n/s1的值尽可能小,满足O(n)的时间不超时。s2的宝物1与s1个宝物2体积相同,所以s=s1*s2的体积只会拿宝物s1或s2中的一种(当s2*v1>s1*v2时,只拿宝物1,反之亦然),这样就把n转化为n%s。然后为了使n/s1尽量小,当s1<s2时,交换s1、s2和v1、v2的值。

然后从零开始枚举需要拿的v1的个数,上限是n/s1,因为进行过预处理,所以保证不会超时。求出与处理之后的最大价值。

最后加上预处理拿到的价值x就是所求答案。

还要注意一点就是,s1、s2、v1、v2的值在int范围内,但相乘之后可能溢出,所以要使用long long。

#include<cstdio>
#include<algorithm>
using namespace std;
int main(){int k,t=0;scanf("%d",&k);while(k--){long long n,s1,s2,v1,v2,x,best=0;scanf("%lld%lld%lld%lld%lld",&n,&s1,&v1,&s2,&v2);long long s=s1*s2,v=max(s2*v1,s1*v2);//求s=s1*s2时的最大价值v。x=n/s*v;//预处理获得的价值。n%=s;if(s1<s2) swap(s1,s2),swap(v1,v2);for(long long i=0;i<=n/s1;++i){long long cur=0,m=n;cur+=i*v1;m-=i*s1;cur+=m/s2*v2;best=max(best,cur);//枚举维护最大价值。}best+=x;//二者相加。printf("Case #%d: %lld\n",++t,best);}return 0;
}

UVa 12325 - Zombie's Treasure Chest(暴力枚举+预处理)相关推荐

  1. UVA - 12325 Zombie's Treasure Chest 暴力

    根据两种情况 选择不同枚举 哇!  这题开始用 int 类型的数写的,只有 存最大 价值量的 mix_ 用了long long ,结果交了一遍 wa ,查了一遍 没问题啊?? 后来意识到 max 函数 ...

  2. Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)

    题意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 分析: 分类枚举, ...

  3. UVA 12325 Zombie's Treasure Chest

    题目大意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 对于宝物1和2, ...

  4. UVa12325 12325 - Zombie‘s Treasure Chest(思路+代码)

    题意: 给定一个容积为n的箱子,装两种宝物,每一种宝物有数量s和价值v这两个参数,问如何装才能使价值最大(输入均为32位带符号的整数) 思路 一开始肯定会想到贪心来找性价比高的,但是举个例子(n=10 ...

  5. UVA 12325 宝箱 Zombie‘s Treasure Chest

    宝箱 Zombie's Treasure Chest 题面翻译 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1::宝物2的体积为S2,价值为V2.输入均为32位带符号整数. ...

  6. Uva12325 Zombie's Treasure Chest [二分区间+模拟退火]

    Zombie's Treasure Chest 题目链接 https://cn.vjudge.net/problem/UVA-12325 题意 两种物品无穷多个,第一种物品重量s1s_1s1​,价值v ...

  7. BZOJ2490 Zombie’s Treasure Chest

    如果n = lcm(s1, s2),那么就可以直接得到maxV = (v / s1 * v1, v / s2 *v2) 然后还剩下一点体积我们暴力枚举用s1的量,让s1为max(s1, s2)可以减少 ...

  8. 【例题 7-11 UVA - 12325】Zombie's Treasure Chest

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 1.N/s1 < 1e6 枚举1的个数 2.N/s2<1e6 枚举2的个数 3.s1和s2的值较小 假设买了s2个1和s ...

  9. UVA 617 - Nonstop Travel(数论+暴力枚举)

    题目链接:617 - Nonstop Travel 题意:给定一些红绿灯.如今速度能在30-60km/h之内,求多少个速度满足一路不遇到红灯. 思路:暴力每个速度,去推断可不能够,最后注意下输出格式就 ...

最新文章

  1. Node.js 博客实例(三)添加文件上传功能
  2. xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd报...
  3. php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库
  4. gcc学习(二)[第二版]
  5. golang 所有进程休眠_Golang-进程无故消失?
  6. keil5按F12调不出头文件中函数
  7. JedisPool.getResource()方法卡死的解决办法
  8. python3爬取数据存入mysql_Python3爬虫爬取数据并存入mysql
  9. html5实现饼图和线图-我们到底能走多远系列(34)
  10. mysql mangodb哪个简单,mysql和mongodb学哪个更加容易
  11. 变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计
  12. jinja2说明文档
  13. Http、浏览器面试题
  14. 《人工智能与模式识别》
  15. 赶快来了解一下职场达人进化论吧,它都有哪些实战技巧?
  16. Photoshop图层混合算法
  17. Keep熬过冬天,但互联网健身的生意依然不好做
  18. 好不容易说明白AQS,面试官却还要我说应用场景,我只好又讲了CountDownLatch ~~~
  19. 无线局域网中iPhone无法访问IIS
  20. 我唯一的愿望就是等你

热门文章

  1. 备份数据库、恢复数据库
  2. ffmpeg-时间基tbn、tbc、tbr
  3. 通用搜索引擎和垂直搜索引擎的区别
  4. 什么样的企业算是负责任的企业
  5. 1v1对战答题小程序
  6. Idea 2021新建项目没有spring选项
  7. AD19 基础应用技巧(差分线的添加走线与蛇形等长)
  8. linux下Dnw配置(mini2440)
  9. 实现JPanel切换
  10. 百度智能云虚拟主机搭建ThinkPHP5.0项目