uva 12325 宝箱
书中的分类枚举法一举克服了普通枚举最大10^9的规模:第一种宝藏最多n/s1个,所以宝藏1的数量可以从1枚举到n/s1,同时算出宝藏2最多多少个,求出总价值。宝藏2最多n/s1个,枚举方法同上。因此如果n/s1比较小,就枚举宝藏1,n/s2比较小就枚举宝藏2如果n很大而s1 s2很小,则用以下的枚举法:s2个宝藏1和s1个宝藏2体积相等,但价值分别为s2*v1和s1*v2。如果前者大于后者,则最优解的宝藏2最多拿s1-1个,因为如果拿了s1个宝藏2,则可以全部换成宝藏1,体积一样但价值更高了。反之对于宝藏1也一样。因此枚举量最大为max(s1-1, s2-1)。
// Created by Chenhongwei in 2015.
// Copyright (c) 2015 Chenhongwei. All rights reserved.#include"iostream"
#include"cstdio"
#include"cstdlib"
#include"cstring"
#include"climits"
#include"queue"
#include"cmath"
#include"map"
#include"set"
#include"stack"
#include"vector"
#include"sstream"
#include"algorithm"
using namespace std;
typedef long long ll;
int main()
{ //ios::sync_with_stdio(false);freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;cin>>T;for(int z=1;z<=T;z++){cout<<"Case #"<<z<<": ";ll n,s1,v1,s2,v2;cin>>n>>s1>>v1>>s2>>v2;ll ans=0;if(s1*v2>s2*v1){swap(v1,v2);swap(s1,s2);}if(s1<=s2){int tmp=min(s1,n/s2);for(int i=0;i<=tmp;i++)ans=max(ans,i*v2+(n-i*s2)/s1*v1);}else{int tmp=min(s2,n/s1);for(int i=0;i<=tmp;i++)ans=max(ans,(n/s1-i)*v1+(n-(n/s1-i)*s1)/s2*v2);}cout<<ans<<endl;}return 0;
}
uva 12325 宝箱相关推荐
- UVA 12325 宝箱 Zombie‘s Treasure Chest
宝箱 Zombie's Treasure Chest 题面翻译 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1::宝物2的体积为S2,价值为V2.输入均为32位带符号整数. ...
- uva 12325(宝箱, 枚举问题);
题目大意: 你有一个体积为N的箱子和两种数量无限的宝物,宝物1的体积为s1,价值为v1; 宝物2的体积为s2, 价值为v2. 输入均为32位带符号整数.你的任务是计算最多能够装多大的宝物. 题目分析 ...
- UVA - 12325 Zombie's Treasure Chest 暴力
根据两种情况 选择不同枚举 哇! 这题开始用 int 类型的数写的,只有 存最大 价值量的 mix_ 用了long long ,结果交了一遍 wa ,查了一遍 没问题啊?? 后来意识到 max 函数 ...
- 【例题 7-11 UVA - 12325】Zombie's Treasure Chest
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 1.N/s1 < 1e6 枚举1的个数 2.N/s2<1e6 枚举2的个数 3.s1和s2的值较小 假设买了s2个1和s ...
- Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
题意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 分析: 分类枚举, ...
- UVA 12325 Zombie's Treasure Chest
题目大意: 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物? 对于宝物1和2, ...
- UVa 12325 - Zombie's Treasure Chest(暴力枚举+预处理)
给出背包大小n,两种宝物的体积s1.s2,两种宝物的价值v1.v2.求能装下的最大价值. 首先进行预处理,使n/s1的值尽可能小,满足O(n)的时间不超时.s2的宝物1与s1个宝物2体积相同,所以s= ...
- 7.7 竞赛题目选讲
7.7 竞赛题目选讲 题目可能有些难,请阅读完前面的篇章后,选择是否进行阅读. 7-11 宝箱 (UVA 12325) 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
最新文章
- Ubuntu环境下使用gnuplot由数据表绘制曲线图
- 使用SQL*PLUS构建完美excel或html输出
- logback的简单使用
- optee中mutex的实现方式
- linux使进程不依赖终端,Linux nohup命令应用简介--让Linux的进程不受终端影响
- HTML DOM console.table() 方法
- [转]何时使用委托而不使用接口(C# 编程指南)
- Java线程局部变量ThreadLocal
- 使用python制作ArcGIS插件(2)代码编写
- Linux之系统信息操作20170330
- 液晶拼接处理器_大屏幕显示系统设备中矩阵与液晶拼接屏的连接方法
- 让智能设备拯救你的颈椎——智能颈椎按摩仪
- Unity 之自动化打包ipa
- 【12c】12c RMAN新特性之recover table(表级别恢复)
- 第七篇 indicators(4)自建指标
- 双系统 Win10下安装Linux(单/双硬盘)
- 【华为OD机试真题 Java】统计射击比赛成绩
- Qt中嵌入Directx11
- 怎么才能快速减去皮下脂肪?
- Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6 Show in File Show i