链接
知识点
思维,贪心
思路
首先,将四个瓷瓶的数量存入数组a中,四个瓷瓶分别为a[1],a[2],a[3],a[4],按照里面的珍珠数量,从小到大排序,因为排序并不影响结果。然后,考虑瓷瓶里面的珍珠数量,但有一种特殊情况,当最后三个瓷瓶里面的珍珠数量相同,此时最大的珍珠数量为a[1] += a[2]*2,之后将瓷瓶里面的珍珠的数量化为0,B,C,D型,讨论B是否为零,如果为零,则最大珍珠数量为a[4],如果B不为零,但能被3整除,最大珍珠数量为a[4] += (a[2] / 3) * 3,如不能被3整除,最大珍珠数量为a[4] += a[2] -1。
代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll a[5];
int main(){
for(int i=1;i<=4;i++){
cin>>a[i];
}
sort(a+1,a+5);
if(a[2]==a[3]==a[4]){
a[1] += a[2]*2;
cout<<a[1]<<endl;
return 0;
}
a[4] += a[1]*2;
a[3] -= a[1];
a[2] -= a[1];
a[1] = 0;
if(a[2]==0){
cout<<a[4]<<endl;
}else if(a[2]%3 == 0){
a[4] += (a[2]/3) * 3;
cout<<a[4]<<endl;
}else{
a[4] += a[2] -1;
cout<<a[4]<<endl;
}
return 0;
}