题意:
通过交换数组中的任意位置的元素,能够使得数组的下标的奇偶校验与元素相同的最小操作次数是?
思路:
判断错误的奇数与偶数个数是否相同,相同直接输出,否则输出‘-1’
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t,n;
cin>>t;
while(t--)
{
cin>>n;
int x,a=0,b=0;
for(int i=0;i<n;++i)
{
cin>>x;
if((x&1)!=(i&1))
{
if(i&1)a++;
else b++;
}
}
if(a==b)cout<<a<<endl;
else cout<<-1<<endl;
}
return 0;
}