Mihai和Bianca正在玩糖果袋游戏。他们有n个糖果袋排成一行。第i个糖果袋里有ai颗糖果。这些糖果袋按顺序从第一个到第n个给玩家。 如果一个糖果袋里有偶数颗糖果,那么Mihai抢夺这个糖果袋,否则,Bianca抢夺这个糖果袋。一旦一个糖果袋被抢夺,里面的糖果数量就会加到抢夺者的总糖果数量中。 Mihai想炫耀自己,所以他想重新排列这个数组,使得在任何时候(除了一开始他们都没有糖果的情况下),Mihai拥有的糖果数量严格大于Bianca。帮助Mihai判断是否存在这样的重新排列。 输入: 第一行包含一个整数t (1≤t≤1000) —— 测试用例的数量。 对于每个测试用例,第一行包含一个整数n (1≤n≤100) —— 数组中糖果袋的数量。 第二行包含n个用空格分隔的整数ai(1≤ai≤100) —— 每个糖果袋中的糖果数量。 输出: 对于每个测试用例,如果存在这样的重新排列,则输出“YES”(不含引号),否则输出“NO”(不含引号)。 答案不区分大小写(例如,字符串“yEs”,“yes”,“Yes”和“YES”将被视为肯定的答案)。写出c++代码
时间: 2024-02-06 15:10:43 浏览: 74
Sumo-Robot-Arduino-Library:Arduino的Sumo机器人库的第一个版本
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int a[n];
int sum = 0, cnt = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
if (a[i] % 2 == 0) cnt++;
}
if (cnt == 0 || (n % 2 == 0 && cnt == n)) { // 无偶数或全是偶数,无法满足条件
cout << "NO" << endl;
continue;
}
sort(a, a + n); // 排序
int miaow = 0, bianca = 0;
for (int i = n - 1; i >= 0; i--) {
if (a[i] % 2 == 0) { // 偶数
miaow += a[i];
i--;
}
if (miaow > bianca) { // 猫咪领先
bianca += a[i];
} else { // 猫咪不领先
miaow += a[i];
}
}
if (miaow > bianca) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
```
阅读全文