宝箱 Zombie’s Treasure Chest
题面翻译
你有一个体积为N的箱子和两种数量无限的宝物。宝物1的体积为S1,价值为V1:;宝物2的体积为S2,价值为V2。输入均为32位带符号整数。
计算最多能装多大价值的宝物。(每种宝物都必须拿非负整数个)。
题目描述
输入格式
输出格式
样例 #1
样例输入 #1
2
100 1 1 2 2
100 34 34 5 3
样例输出 #1
Case #1: 100
Case #2: 86
代码
#include<bits/stdc++.h>
using namespace std;
long long n;
long long s,ss;
long long v,vv;
long long ans;
long long maxx;
long long k;
int main()
{
cin>>k;
for(int i=1;i<=k;i++)
{
cin>>n>>s>>v>>ss>>vv;
ans=0;
maxx=0;
if(n>s*ss*2+s+ss)
{
if(ss*v>s*vv)
{
ans+=((n-s-ss)/(s*ss)-2)*v*ss;
}
else
{
ans+=((n-s-ss)/(s*ss)-2)*vv*s;
}
n-=((n-s-ss)/(s*ss)-2)*s*ss;
}
if(s<ss)
{
for(int i=n/ss;i>=0;i--)
{
maxx=max(maxx,vv*i+(n-i*ss)/s*v);
}
}
else
{
for(int i=n/s;i>=0;i--)
{
maxx=max(maxx,v*i+(n-i*s)/ss*vv);
}
}
cout<<"Case #"<<i<<": "<<ans+maxx<<endl;
}
return 0;
}