HDU4091:Zombie’s Treasure Chest (分类-数学)
题意:给两种宝石,体积S1,S2,价值V1,V2,背包容量n,求最大收益。 所有数据都在32位整数范围内。
思路:只有两种物品的背包,显然不是常见的背包,应该从背包之外的思路下手。
1:可以猜想其中一个是数量少于1e5,暴力求,然后过了。
2:分类处理数据: 如果有物品体积>=sqrt(N),那么可以枚举它的数量[0,N/S];
不然,对于性价比低的那一个,它的数量t,和性价比高的那个的体积S的关系是t<=S。
#include<bits/stdc++.h>
#define s first
#define e second
#define rep(i,a,b) for(ll i=a;i<=b;i++)
#define rep2(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
using namespace std;
int main()
{
int T,C=; ll S,S1,V1,S2,V2,ans;
scanf("%d",&T);
while(T--){
scanf("%lld%lld%lld%lld%lld",&S,&S1,&V1,&S2,&V2);
printf("Case #%d: ",++C); ans=;
if(S1<=S2&&V1>=V2) ans=max(ans,(S/S1)*V1);
if(S2<=S1&&V2>=V1) ans=max(ans,(S/S2)*V2);
if(S1*S1>=S){
rep(i,,S/S1)
ans=max(ans,V1*i+(S-S1*i)/S2*V2);
}
if(S2*S2>=S){
rep(i,,S/S2)
ans=max(ans,V2*i+(S-S2*i)/S1*V1);
}
if(S1*S1<S&&S2*S2<S){
rep(i,,max(S1,S2)){
if(S>=S1*i) ans=max(ans,V1*i+(S-S1*i)/S2*V2);
if(S>=S2*i) ans=max(ans,V2*i+(S-S2*i)/S1*V1);
}
}
printf("%lld\n",ans);
}
return ;
}
HDU4091:Zombie’s Treasure Chest (分类-数学)的更多相关文章
- UVa 12325 - Zombie's Treasure Chest-[分类枚举]
12325 Zombie’s Treasure Chest Some brave warriors come to a lost village. They are very lucky and fi ...
- G - Zombie’s Treasure Chest(动态规划专项)
G - Zombie’s Treasure Chest Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &am ...
- 一道看似dp实则暴力的题 Zombie's Treasure Chest
Zombie's Treasure Chest 本题题意:有一个给定容量的大箱子,此箱子只能装蓝宝石和绿宝石,假设蓝绿宝石的数量无限,给定蓝绿宝石的大小和价值,要求是获得最大的价值 题解:本题看似是 ...
- HDU 4091 Zombie’s Treasure Chest 分析 难度:1
Zombie’s Treasure Chest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
题意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 分析: 分类枚举, ...
- hdu 4091 Zombie’s Treasure Chest(数学规律+枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4091 /** 这题的一种思路就是枚举了: 基于这样一个事实:求出lcm = lcm(s1,s2), n ...
- UVA - 12325 Zombie's Treasure Chest (分类搜索)
题目: 有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号整数.计算最多能装多大价值的宝物,每种宝物都必须拿非负整数个. 思 ...
- uva 12325 Zombie's Treasure Chest
https://vjudge.net/problem/UVA-12325 题意: 一个箱子,体积为N 两种宝物,体积为S1.S2,价值为V1.V2,数量无限 最多装多少价值的宝物 数据范围:2^32 ...
- BZOJ2490 Zombie’s Treasure Chest
如果n = lcm(s1, s2),那么就可以直接得到maxV = (v / s1 * v1, v / s2 *v2) 然后还剩下一点体积我们暴力枚举用s1的量,让s1为max(s1, s2)可以减少 ...
随机推荐
- PHP不过过滤防止xss攻击的方法
PHP不过过滤防止xss攻击的方法<pre> $content=htmlspecialchars($content); $pos=strpos($content,"\u" ...
- 22 Maven高级应用
1.Maven基础知识回顾 maven是一个项目管理工具.依赖管理:maven对项目中的jar包的管理过程.传统的工程我们直接将jar包放置到项目中. maven工程真正的jar包放置在仓库中,项目中 ...
- Navicat Premium 12 安装与破解,Navicat Premium通用的数据库管理工具
本文转自:https://blog.csdn.net/WYpersist/article/details/86530973 Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同 ...
- Python入门 常量 注释 基础数据类型 用户输入 流程控制
Python入门 一.常量 在Python中,不像其他语言有绝对的常量,修改会报错,在Python中有个约定俗成的规定--常量就是将变量名大写. 尽量保持不更改的一种量 , 这个常量有是干什么的呢 其 ...
- Linux下使用strip如何对库和可执行文件进行裁减
如果生成的可执行文件或库比较大,这时候就可以使用strip命令进行裁减,在嵌入式开发中,如果使用的交叉编译工具是arm-linux,则命令 是arm-linux-strip,如果是arm-uclibc ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- The underlying connection was closed: An unexpected error occurred on a rece
服务器问题,在后台访问外网了,特别是https的网站,容易出这个问题. 修改服务器配置,或修改代码解决.
- python 安装 SQLAlchemy 报错
安装 SQLAlchemy 报错 安装命令 pip install -i https://pypi.doubanio.com/simple SQLAlchemy 报错截图 编码错误,这里我们需要改下源 ...
- vue创建项目(推荐)
上一节我们介绍了vue搭建环境的情况,并使用一种方式搭建了一个项目,在这里为大家推荐另一种创建项目的方式. vue init webpack-simple vuedemo02 cd vuedemo02 ...
- business from English bisynes
business from English bisynes Etymology From Middle English bisynes Hyphenation: business Noun busin ...