比赛 期末考试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;
}