B. Two Arrays 解析(思維)

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

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

題目
略,請直接看原題。

前言

a

想法

注意到,如果\(T\)是奇數,那麼由於奇數必定是偶\(+\)奇(在兩個正數相加時),因此如果\(T\)是奇數,就分成兩個奇數和偶數各一個陣列即可。
如果\(T\)是偶數,那麼我們可以把\(<\frac{T}{2}\)\(>\frac{T}{2}\)\(=\frac{T}{2}\)的數字分開來看待。前兩類分兩類,而最後一類只要平均分散在兩個陣列中就好了。

程式碼:

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看
Submission

posted @ 2020-09-28 01:07  petjelinux  阅读(323)  评论(0编辑  收藏  举报