QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#770835#9745. 递增序列liuhuahua#WA 35ms3856kbC++141.6kb2024-11-22 00:41:162024-11-22 00:41:16

Judging History

This is the latest submission verdict.

  • [2024-11-22 00:41:16]
  • Judged
  • Verdict: WA
  • Time: 35ms
  • Memory: 3856kb
  • [2024-11-22 00:41:16]
  • Submitted

answer

#include<bits/stdc++.h>
#define N 200005
using namespace std;
int T,n,k,a[N],c[32],ans;
void solve(int k,int l,int r){
    if(k==-1)return;
    int mid=-1;
    if(c[k]==-1)return;
    for(int i=l+1;i<=r;i++){
        if((a[i]&(1<<k))!=(a[i-1]&(1<<k))){
            if(mid==-1)mid=i-1;
            else{
                c[k]==-1;
                return;
            }
        }
    }
    if(mid==-1){
        if(c[k]==0)c[k]=3;
        solve(k-1,l,r);
    }else if(a[mid]&(1<<k)){
        if(c[k]==0)c[k]=2;
        else if(c[k]==1)c[k]=-1;
        else if(c[k]==3)c[k]=2;
        solve(k-1,l,mid),solve(k-1,mid+1,r);
    }else{
        if(c[k]==0)c[k]=1;
        else if(c[k]==2)c[k]=-1;
        else if(c[k]==3)c[k]=1;
        solve(k-1,l,mid),solve(k-1,mid+1,r);
    }
}
int sum(int now){
    // cout<<now<<"!!";
    int res=1;
    for(int i=now-1;i>=0;i--)if(c[i]==3)res*=2;
    return res;
}
void dfs(int now){
    if(now==-1)return;
    if(k&(1<<now)){
        if(c[now]==1)ans+=sum(now);
        else if(c[now]==2)dfs(now-1);
        else ans+=sum(now),dfs(now-1);
    }else{
        if(c[now]==1)dfs(now-1);
        else if(c[now]==3)dfs(now-1);
    }
}
int main(){
    cin>>T;
    while(T--){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        memset(c,0,sizeof(c));
        solve(31,1,n);
        bool fl=1;
        for(int i=31;i>=0;i--)if(c[i]==-1)fl=0;
        // for(int i=31;i>=0;i--){
            // cout<<c[i]<<" ";
        // }
        if(!fl){
            puts("0");
            continue;
        }ans=0;
        dfs(31);
        cout<<ans<<"\n";
    }
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3832kb

input:

1
4 17
3 2 5 16

output:

4

result:

ok single line: '4'

Test #2:

score: -100
Wrong Answer
time: 35ms
memory: 3856kb

input:

36156
2 732025001343805266
563399128172323734 55283226774627822
7 388099190813067712
564150557919527813 457487771983557281 332055400678110195 760833651510929158 785768483273197875 690506113272551236 463276585748519124
2 798714574862593347
426890163990834364 434764725667883272
1 414708220571820990
42...

output:

0
0
1335668035
-325180482
861648845
1
0
0
1
0
-1848046910
2
0
11196683
0
0
939524096
0
1344953322
0
-1711938857
1
1
2
4
849117556
1492630298
0
-734159724
0
0
1744830464
0
1530537701
0
0
1
0
1
1
2
0
1
2
536870912
6
1
4
-426202534
0
0
0
1
2
118577688
1073741824
2
0
0
0
0
1073741824
5
536870912
0
0
1
3...

result:

wrong answer 1st lines differ - expected: '288230376151711744', found: '0'