贪心 · 例11-毒瘤xor(贪心\位运算)

贪心 · 例11-毒瘤xor

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;

int sum[N][40];

signed main(){
    int n; cin >> n;
    for(int i = 1; i <= n; ++i){
        int x; cin >> x;
        for(int j = 0; j < 31; ++j){
            if((x >> j) & 1) sum[i][j] = 1;
            sum[i][j] += sum[i-1][j];
        }
    }
    
    int q; cin >> q;
    while(q--){
        int l, r; cin >> l >> r;
        long long res = 0;
        for(int i = 0; i < 31; ++i){
            int t = sum[r][i] - sum[l-1][i];
            //1的个数少于0
            if(2 * t < r - l + 1) res += 1 << i;
        }
        cout << res << endl;
    }
    
    return 0;
}
posted @ 2025-03-27 08:56  awei040519  阅读(13)  评论(0)    收藏  举报