思路

贪心

过程

alt

代码

#include <iostream>
#include <climits>

using namespace std;

typedef long long LL;

LL t, n, a, b;

int main()
{
    cin >> t;
    while(t --)
    {
        cin >> n >> a >> b;
        if(n <= 2) cout << min(a, b) << endl;
        else
        {
            LL ans = 0;
            if(3 * a < 2 * b) // 优选选择2人船
            {
                if(n % 2) ans = (n / 2 - 1) * a + min(2 * a, b);
                else ans = n / 2 * a;
            }
            else // 优先选择3人船
            {
                if(n % 3 == 1) ans = (n / 3 - 1) * b + min(a + b, min(2 * b, 2 * a));
                else if(n % 3 == 2) ans = (n / 3 - 1) * b + min(a + b, min(2 * b, 3 * a));
                else ans = n / 3 * b;
            }
            cout << ans << endl;
        }
    }
    return 0;
}