AT1917 みんなでワイワイみかん 题解

题目传送门

更好的阅读体验?

思路:

  • 分情况讨论
  1. 买橘子时单个买需要的钱比配套买便宜或相等,这时直接单个买就可以,代码实现为 a*k

  2. 买橘子时单个买需要的钱比配套买贵,又有两种情况:

  1. 配套买最多,再单个买,代码实现为 b*(k/l)+a*(k%l)
  2. 剩下不能配套买全部,但可以再买一套,代码实现为 (k/l+1)*b
  3. 取最小值即可。

注意:

  • AT 的题需要换行

  • 数据范围比较大,会炸 int,需要开 long long

代码:

#include<bits/stdc++.h>
using namespace std; 
long long k,a,l,b,ans;
int main()
{
	cin>>a>>b>>k>>l;
	if(a*l<=b) ans=a*k;//公式
	else ans=min((k/l+1)*b,(b*(k/l)+a*(k%l)));//公式 
	cout<<ans<<endl;
	return 0;
}
posted @ 2025-02-08 16:44  Wy_x  阅读(10)  评论(0)    收藏  举报