https://vjudge.net/problem/CodeForces-1296A
思路:给一个数组,每次操作可以使
a
[
i
]
=
a
[
j
]
,
(
i
!
=
j
)
a[i]=a[j],(i!=j)
a[i]=a[j],(i!=j),问经过任意次操作后,能否使得数组元素之和为奇数。
思路:首先判断数组元素之和是否为奇数,若和为奇数或和为偶数且该数组中至少有 1 1 1个偶数和 1 1 1个奇数,就有解。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int t,n;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
bool flag1=0,flag2=0;
int sum=0,v;
for(int i=0;i<n;i++)
{
scanf("%d",&v);
sum+=v;
if(v&1)
flag1=1;
else
flag2=1;
}
if(sum&1||(flag1&&flag2))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}