B. Two Arrays 解析(思維)

Codeforce 1417 B. Two Arrays 解析(思維)

今天我們來看看CF1417B
題目連結linux

題目
略,請直接看原題。ios

前言

a
spa

@copyright petjelinux 版權全部
觀看更多正版原始文章請至petjelinux的blog

想法

注意到,若是\(T\)是奇數,那麼由於奇數一定是偶\(+\)奇(在兩個正數相加時),所以若是\(T\)是奇數,就分紅兩個奇數和偶數各一個陣列便可。
若是\(T\)是偶數,那麼我們能夠把\(<\frac{T}{2}\)\(>\frac{T}{2}\)\(=\frac{T}{2}\)的數字分開來看待。前兩類分兩類,而最後一類只要平均分散在兩個陣列中就行了。code

程式碼:

const int _n=1e5+10;
int t,n,T,a[_n];
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  cin>>t;while(t--){
    cin>>n>>T;rep(i,0,n)cin>>a[i];
    if(T%2==1){
      rep(i,0,n){
        if(a[i]%2==0)cout<<"0 ";
        else cout<<"1 ";
      }cout<<'\n';
    }else{
      bool z=0;
      rep(i,0,n){
        if(a[i]<T/2)cout<<"0 ";
        else if(a[i]==T/2){cout<<z<<' '; z=!z;}
        else if(a[i]>T/2)cout<<"1 ";
      }cout<<'\n';
    }
  }
  return 0;
}

標頭、模板請點Submission看
Submissionblog

相關文章
相關標籤/搜索