B. Two Arrays 解析(思維)
Codeforce 1417 B. Two Arrays 解析(思維)
今天我們來看看CF1417B
題目連結
題目
略,請直接看原題。
前言
a
@copyright petjelinux 版權所有
觀看更多正版原始文章請至petjelinux的blog
觀看更多正版原始文章請至petjelinux的blog
想法
注意到,如果\(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