- 从牌面上可以得到一个上面(单独上限)
- 然后总的牌面又可以得到一个上限。
- 这两个上限的最小
#include<bits/stdc++.h> using namespace std; //模拟赛 int main(){ long long E,EM,M,MH,H; cin>>E>>EM>>M>>MH>>H; //从单独组牌来考虑问题得上届 long long easy = E+EM; long long mid = EM+M+MH; long long hard = MH+H; //从单独组牌来考虑问题得上届 long long upper = min(easy,min(mid,hard)); // 以共同出现得上界和单独出现得上界取最小。 long long ans = min((E+EM+M+MH+H)/3,upper); cout<<ans<<endl; return 0; }