hdu 1205 吃糖果(鸽巢原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1205
题意
Gardon 有 $n$ 种糖果,每种数量已知,Gardon 不喜欢连续两次吃同样的糖果,问是否有可行的方案。
题解
假如数量最多的一种糖果有 $N$ 个,把它们视为 $N$ 个隔板,如果其余糖果的数量少于 $N - 1$,则至少有两个隔板间没有糖果。否则,依次将每种糖果放入 $N$ 个隔板形成的 $N + 1$ 个空间即可。
代码
#include <bits/stdc++.h> using ll = long long; using namespace std; void solve() { int n; cin >> n; int mx = 0; ll sum = 0; for (int i = 0; i < n; i++) { int x; cin >> x; sum += x; mx = max(mx, x); } sum -= mx; cout << (sum < mx - 1 ? "No" : "Yes") << "\n"; } int main() { int t; cin >> t; while (t--) solve(); }

浙公网安备 33010602011771号