【MX-X11-T0】「蓬莱人形 Round 1」糖果曲奇巧克力 题解
GeorgeDeng
·
·
题解
题目分析
- 选出 $2$ 个糖果或者 $2$ 个曲奇,代价为 $x$;
- 选出 $1$ 个糖果和 $1$ 个曲奇,代价为 $y$。
求删完糖果或曲奇的最小代价。
## 思路
一道分类讨论题。
因为有可能 $x>2y$,所以如果出现这种情况的时候,一个一个删除更优,可以直接把 $x$ 赋值为 $2\times y$。
接下来就是计算。我们讨论把糖果删完和把曲奇删完的代价,答案就是删完糖果的代价与删完曲奇的代价中取最小值。糖果或曲奇删除的代价怎么算?因为两个两个删效果更快,而且不用考虑另外一个东西,所以优先两个两个删,代价为数量除以 $2$ 再乘上 $x$。然后把不足以两个两个删的一个一个删就行了,代价是数量对 $2$ 取模再乘上 $y$。综上可以推出式子 $ans=\min(a\div 2 \times x+a \bmod 2 \times y,b\div 2 \times x+b \bmod 2 \times y)$。
注意并不是哪个少优先删哪个,我就是因为这个被卡了 $30min$。
## code:
```cpp
#include <iostream>
#define int long long
using namespace std;
signed main()
{
int t;
cin>>t;
while(t--){
int a,b,x,y;
cin>>a>>b>>x>>y;
if(x>2*y) x = 2*y;//如果两个一起删除还没有一个一个删除代价低,就x=2*y
cout<<(min(((a/2)*x+(a%2)*y),(b/2)*x+(b%2)*y))<<endl;//直接求答案
}
return 0;
}
```