CometOJ 卖萌鸡尾酒(贪心)

mac2022-06-30  27

题目链接:https://cometoj.com/problem/1761 solution:考虑五个柱子、每次从最多的两个上面取一个环、注意:不能一次性取空,导致结果不正确; 最后只有可能还有一个柱子上面有环或者全空 如果arr[5]大于前四者之和、那么答案最多只能是前四者之和了 然后如果五者之和为偶数、答案为sum/2;为奇数,答案为(sum-1)/2 两种情况的代码都表示为sum/2

#include <bits/stdc++.h> using namespace std; int main() { long long a[5], sum = 0; for (int i = 0; i < 5; ++i){ scanf("%lld", &a[i]); sum += a[i]; } sort(a, a + 5); if (a[4] > a[0] + a[1] + a[2] + a[3])printf("%lld\n", a[0] + a[1] + a[2] + a[3]); else printf("%lld\n", sum / 2); return 0; }
最新回复(0)