| 比赛 |
期末考试4 |
评测结果 |
AAAAAAAAAAEEEEEEEEEEEEEEE |
| 题目名称 |
区间消除 |
最终得分 |
40 |
| 用户昵称 |
zhyn |
运行时间 |
2.437 s |
| 代码语言 |
C++ |
内存使用 |
3.57 MiB |
| 提交时间 |
2026-02-12 12:17:36 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 2005
int a,n;
ll c[maxn];
ll d[maxn];
ll e[maxn],f[maxn];
void solve(){
cin>>a;
d[0]=0;
for(int i=1;i<=a;i++){
cin>>c[i];
d[i]=d[i-1]^c[i];
e[i]=f[i]=0;
}
ll g=d[a];
if(g==0){
e[1]=f[a]=-1LL;
}else{
ll h=1LL<<(63-__builtin_clzll(g));
e[1]=f[a]=h;
}
vector<int> h(a+1,0);
if(a==1)h[1]=1;
for(int i=a;i>=1;i--){
for(int j=1;j+i-1<=a;j++){
int k=j+i-1;
ll l=d[k]^d[j-1];
bool m=false;
if(i==a){
m=true;
}else{
if((e[j]&l)||(f[k]&l)||(e[j]==-1LL)||(f[k]==-1LL)){
m=true;
}
}
if(m){
if(i==1){
h[j]=1;
}else{
if(l==0){
e[j]=f[k]=-1LL;
}else{
ll n=1LL<<(63-__builtin_clzll(l));
e[j]|=n;
f[k]|=n;
}
}
}
}
}
for(int i=1;i<=a;i++)cout<<h[i];
cout<<"\n";
}
int main(){
freopen("dump.in","r",stdin);
freopen("dump.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
while(n--){
solve();
}
return 0;
}