QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#770843 | #9745. 递增序列 | liuhuahua# | WA | 34ms | 3720kb | C++14 | 1.7kb | 2024-11-22 00:45:32 | 2024-11-22 00:45:32 |
Judging History
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){
ans++;
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: 0ms
memory: 3660kb
input:
1 4 17 3 2 5 16
output:
4
result:
ok single line: '4'
Test #2:
score: -100
Wrong Answer
time: 34ms
memory: 3720kb
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 1335668036 -325180481 861648846 1 0 0 1 0 -1848046909 2 0 11196684 0 0 939524096 0 1344953323 0 -1711938856 1 1 2 4 849117557 1492630299 0 -734159723 0 0 1744830464 0 1530537702 0 0 1 0 1 1 2 0 1 2 536870912 6 1 4 -426202533 0 0 0 1 2 118577689 1073741824 2 0 0 0 0 1073741824 5 536870912 0 0 1 3...
result:
wrong answer 1st lines differ - expected: '288230376151711744', found: '0'