这是第三套笔试题了
忙着赶论文的实验一直没空更博客emmmm
题意 大概
需要x毫升的饮料
现有500毫升装 a元
1500毫升装 b元
求至少花费多少元才可以满足至少x毫升
结束了我才想到可以用完全背包
仔细看了一下我的解法还是有问题
等题目公开了再更新
更新题解,统一操作大小1500,剩余部分特殊处理
if __name__ == '__main__':
n = int(input())
while n:
n -= 1
x, a, b = map(int, input().split())
ans = 0
if 3*a > b:
ans += b * (x // 1500)
else:
ans += 3 * a * (x // 1500)
left = x % 1500
if 0 < left <= 500:
ans += min(a, b)
elif 500 < left <= 1000:
ans += min(2*a, b)
elif left > 1000:
ans += min(3*a, b)
print(ans)
#include <iostream>
#include <cstdio>
#include <math.h>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
long long x,a,b;
cin>>x>>a>>b;
long long ans=0;
double pr1=500.0/a;
double pr2=1500.0/b;
if(pr1<pr2)
{
ans+=(x/1500)*b;
x-=(1500*(x/1500));
// cout<<x<<endl;
ans+=(x/500)*a;
if(x-(500*(x/500))>0)
ans+=min(a,b);
}
else
{
ans+=(x/500)*a;
x-=(500*x/500);
ans+=(x/1500)*b;
if(x-(1500*(x/1500))>0)
ans+=min(a,b);
}
cout<<ans<<endl;
}
}