题解 CF1118A 【Water Buying】

题目大意:

你需要买$n$升水,现在有两种规格的水瓶:1升水的和2升水的,现给出1升水和2升水水瓶的单价,求最少需要花费多少钱。有$q$个询问。

思路:贪心

要使总花费最小,我们需要尽量多选取性价比高的规格。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
int q;
long long n,a,b;//注意要开long long
int main()
{
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>n>>a>>b;
if(a*2<=b)//买1升的性价比高于买2升的性价比
{
cout<<n*a<<endl;
}
else
{
cout<<n/2*b+(n-n/2*2)*a<<endl;//题目要求的是刚好购买n升,所以不足2升的要买1升的补齐
}
}
return 0;
}