← 返回题目页

A2028 [UESTCPC 2024] 取数游戏

标程

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        ll sum = 0, mx = 0;
        for (int i = 0; i < n; i++) {
            ll v;
            cin >> v;
            sum += v;
            mx = max(mx, v);
        }

        // 结论:n 为偶数时先手必胜;n 为奇数时,只有能直接取走超过一半的数才必胜
        bool win = (n % 2 == 0) || (2 * mx > sum);
        cout << (win ? "YES" : "NO") << "\n";
    }
    return 0;
}

动画演示