| 比赛 |
期末考试4 |
评测结果 |
AAAATTAAAAEEEEEEEEEEEEEEE |
| 题目名称 |
区间消除 |
最终得分 |
32 |
| 用户昵称 |
Ruyi |
运行时间 |
4.671 s |
| 代码语言 |
C++ |
内存使用 |
13.42 MiB |
| 提交时间 |
2026-02-12 11:21:04 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 1001
using namespace std;
int main(){
freopen("dump.in","r",stdin);
freopen("dump.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll q;
cin>>q;
while(q--){
ll n;
cin>>n;
string s="";
ll a[N],pre[N]={0};
for(int i=1;i<=n;i++){
cin>>a[i];
pre[i]=pre[i-1]^a[i];
}
vector<vector<bitset<N>>> dp(n+2,vector<bitset<N>>(n+2));
for(int l=1;l<=n;++l) dp[l][l].set(l);
for(int len=2;len<=n;++len){
for(int l=1;l+len-1<=n;++l){
int r=l+len-1;
bitset<N> cur;
for(int k=l;k<r;++k){
ll xl=pre[k]^pre[l-1],xr=pre[r]^pre[k];
if(xl>xr) cur|=dp[l][k];
else if(xr>xl) cur|=dp[k+1][r];
else{
cur|=dp[l][k];
cur|=dp[k+1][r];
}
}
dp[l][r]=cur;
}
}
for(int i=1;i<=n;++i) s+=(dp[1][n].test(i)?'1':'0');
cout<<s<<endl;
}
return 0;
}