NC18979. 毒瘤xor
描述
输入描述
第一行一个整数N,表示序列的长度
第二行N个整数,表示序列内的元素
第三行一个整数q,表示询问的个数
接下来q行,每行两个整数[L, R],表示询问的区间
输出描述
输出q行,每行一个整数表示答案
若有多组可行解,请输出较小的解
示例1
输入:
5 4 78 12 1 3 3 2 5 1 4 3 3
输出:
2147483632 2147483635 2147483635
C++(clang++ 11.0.1) 解法, 执行用时: 375ms, 内存消耗: 14376K, 提交时间: 2023-07-31 18:51:59
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int a[N][33]={0}; int main() { int n,x,i,j,q,y,num=0; cin>>n; for(i=1;i<=n;i++) { cin>>x; for(j=0;j<31;j++) a[i][j]=a[i-1][j]+((x>>j)&1); } cin>>q; while(q--) { num=0; cin>>x>>y; for(i=0;i<31;i++) if(2*(a[y][i]-a[x-1][i])<y-x+1) num+=pow(2,i); cout<<num<<endl; } return 0; }