再细致一点。。。。设二人间x三人间y 会有2x➕3y=m 总开支pay=ax+by 联立可以得到 pay=【(3a-2b)x+bm】/3。
所以要分析3a-2b的正负,3a-2b为负的时候x取越大越好 ,3b-2b为正的时候x取越小越好
当总人数为奇数的时候,x的最大值为(m-3)/2,当总人数为偶数的时候,x的最大值为m/2
当总人数m%3==0的时候,像6(3+3),9(3+3)......,那x最小值是0;m%3==1的时候,像7(2+2+3),10(2+2+3+3)......那x最小值要为2;m%3==2的时候像8 (2+3+3),11(2+3+3+3).......,x最小值为1
endding~
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
long long int m,a,b;
cin>>m>>a>>b;
long long int min,max;
if(m&1)
{
max=(m-3)/2;
}
else
{
max=m/2;
}
if(m%3==0)
{
min=0;
}
else if(m%3==2)
{
min=1;
}
else
{
min=2;
}
if(m==2)
{
cout<<a<<endl;
}
else if(m==3)
{
cout<<b<<endl;
}
else
{
if(3*a==2*b)
{
cout<<b*m/3<<endl;
}
else if(3*a>2*b)
{
cout<<((3*a-2*b)*min+b*m)/3<<endl;
}
else
{
cout<<((3*a-2*b)*max+b*m)/3<<endl;
}
}
}
return 0;
}