题意
t t t 组数据。
每一组数据有一个 n n n,和一个数组 a a a。
我们要构造一个数据 b b b。
使得 $a_{1} + a_{2} + \cdots + a_{n} = b_{1} + b_{2} + \cdots + b_{n} $ 且对于任意的 1 ≤ i ≤ n 1 \le i \le n 1≤i≤n 都有 a i ≠ b i a_{i}\ne b_{i} ai=bi。
思路
首先为了满足对于任意的 1 ≤ i ≤ n 1 \le i \le n 1≤i≤n 都有 a i ≠ b i a_{i}\ne b_{i} ai=bi,我们可以把 1 1 1 改成 2 2 2,其余的改成 1 1 1 就可以满足了。
当 n n n 为 1 1 1 时,一定无解,其次当操作完之后的 a a a 数组的和大于 b b b 数组的和时,也一定无解( b b b 数组的值已经最小了)。
其余情况都可以。
代码
#include<bits/stdc++.h>
#define int long long
#define il inline
#define rg register
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;
int t,n,a[2900001],res=0,sum=0;
signed main() {
IOS;
cin>>t;
while(t--) {
res = 0,sum = 0;
cin>>n;
for(rg int i(1); i<=n; ++i) {
cin>>a[i];
sum += a[i];
if(a[i] == 1) res += 2;
else res++;
}
if(n == 1 || res > sum) {
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
}
}
return 0;
}