CF1978B 题解

首先当 aba\ge b 时,kk00 即可。

a<ba\lt b 时,要想是利润尽可能大,必须满足前 kk 天的利润都比 aa 大,即要满足 bkab-k\ge a。可以得出 kk 最大为 bab-a,然后计算即可。

还需注意的是,kk 需要满足不超过 min(n,b)\min(n,b) 的限制,所以最终 k=min{n,ba}k=\min\{n,b-a\},答案为 (b+bk+1)k2+(nk)a\frac{(b+b-k+1)k}{2}+(n-k)a

代码

#include<bits/stdc++.h>
using namespace std;
int t;
long long n,a,b;
int main(){
	scanf("%d",&t);
	while(t--){
	    scanf("%lld%lld%lld",&n,&a,&b);
		if(a>=b){
			printf("%lld\n",n*a);
			continue;
		}
		long long k=min(n,b-a);
		printf("%lld\n",(b+b-k+1)*k/2+a*(n-k));
	}
	return 0;
}
posted @ 2024-06-18 21:53  fengxiaoyi  阅读(20)  评论(0)    收藏  举报  来源