Description
企鹅来到了海边寻找鱼群。他想摸正好nnn千克鱼。
附近海中的鱼只有两个品种:重111千克的小鱼和重222千克的大鱼。海里有无限多的这两种鱼。
企鹅摸到第一种鱼要花费aaa点体力,摸到第二种鱼要花费bbb点体力。
企鹅想尽可能节省体力。你的任务是找出他最少需要花费多少点体力,能摸到正好nn千克鱼。
Input
第一行输入一个正整数TT,代表数据组数。
每组数据输入三个正整数n,a,b,分别表示企鹅需要多少千克鱼,摸第一种鱼消耗的体力和摸第二种鱼消耗的体力。
1≤T≤5001 \le T \le 5001≤T≤500
1≤n≤1061 \le n \le 10^61≤n≤106
1≤a,b≤10001≤a,b≤10001≤a,b≤1000
Output
每组数据输出一行,表示企鹅摸n千克鱼所需要的最少体力。
Sample Input 1
4
10 1 3
7 3 2
1 1000 1
1000000 42 88
Sample Output 1
10
9
1000
42000000
题意
摸1千克的鱼需要体力a
摸2千克的鱼需要体力b
正好摸n千克的鱼需要的最少体力是多少呢?
思路
贪心选择单位体力最少的方案即可。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int T;
cin>>T;
while(T--)
{
ll n;
int a,b;
cin>>n>>a>>b;
if(n==1)
{
cout<<(ll)a<<"\n";
continue;
}
if(b<a*2)
{
if(n%2==0)
cout<<b*(n/2)<<"\n";
else
cout<<b*(n/2) + a<<"\n";
}
else
{
cout<<a*n<<"\n";
}
}
}
417

被折叠的 条评论
为什么被折叠?



