CF1834A Unit Array

 

/*
n个数 1/-1 求最少修改几个数 满足 ai..>=0 且 ai*..==1 
n/=2 是 -1 最多的个数    cnt(-1个数) 修改后一定是偶数 
1.cnt偶数+cnt<=n/2 -> 0
2.cnt偶数+cnt>n/2 ->cnt-n/2+(cnt-n/2 %2 ==1)*1
3.cnt奇数+cnt<=n/2 -> 1
4.cnt奇数+cnt>n/2 -> cnt-n/2+(cnt-n/2 %2 ==0)*1
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
//#include<queue>
//#include<vector>
//#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=1e2 +10;
const int mod=998244353;
const int inf=0x3f3f3f3f;

int n,a[maxn],cnt;

int main()
{
    ios::sync_with_stdio(false);
    int T;cin>>T;
    while(T--)
    {
        cnt=0;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(a[i]==-1) cnt++;    
        } 
    
        if(cnt%2==0){
            if(cnt<=n/2) cout<<"0\n";
            else cout<<cnt-n/2+((cnt-n/2)%2==1)<<'\n';
        }
        else{
            if(cnt<=n/2) cout<<"1\n";
            else cout<<cnt-n/2+((cnt-n/2)%2==0)<<'\n';
        }
    }

    return 0;
}

 

posted @ 2023-10-05 00:28  JMXZ  阅读(17)  评论(0)    收藏  举报