B_NCPC题解
题目解析
首先我想吐槽一下,我真的太蠢了。竟然被B题卡的做不出来,后面就不做了。这条题目我本来已经有思路了,可是通过率永远只要30%几老超时,也有状态不行的原因(寒假玩的我不亦乐乎)废话不多说。
本题的题意是只要判断参赛选手是否有可能赢,仔细想想就会发现这题实际上跟最美味的人息息相关,若最强者是偶数后面的人就都有可能赢,而最强之人因为免不了互相切磋而同时败北。这样一来代码就好写了。
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while(t--){
int n;
cin >> n;
vector<int> arr(n);
vector<int>brr(n);
for(int i=0;i<n;++i){
cin>>arr[i];
brr[i]=arr[i];
}
sort(brr.begin(),brr.end(),greater<int>());
int sign=brr[0];
bool bz;
int cnt=1;
for(int i=1;i<n;++i){
if(brr[i]==brr[0])cnt++;
}
if(cnt%2==1){
bz=1;
}
else bz=0;
if(bz){
for(int i=0;i<n;++i){
if(arr[i]==sign)cout<<1;
else cout<<0;
}
}
else{
for(int i=0;i<n;++i){
if(arr[i]==sign)cout<<0;
else cout<<1;
}
}
cout<<'\n';
}
return 0;
}
查看12道真题和解析