#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;constint maxn =2e5+10;int n;int a[maxn];intmain(){//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d",&n);int x =(1<<30)-1, y =0;for(int i =1; i <= n; i++){scanf("%d",&a[i]);
x &= a[i];
y |= a[i];}
x ^= y;sort(a+1, a+1+n);int m =unique(a+1, a+1+n)-(a+1);
ll ans =0;for(int p =0; p <=30; p++){if(x&(1<<p)){
ans =(1ll<<p)*(m-1);break;}}
cout << ans;return0;}
J
题意:
思路:
ac代码:
//题解代码,我偷懒了#include<bits/stdc++.h>usingnamespace std;constint N =2e5+7, mod =1e9+7;typedeflonglong ll;typedef pair<int,int> pii;int n, m, t[N <<2], t1[N <<2], k[N];voidmodify(int o,int l,int r,int k, ll v, ll v1){if(l == r)return t[o]= v, t1[o]= v1,void();int mid =(l + r)>>1;if(k <= mid)modify(o <<1, l, mid, k, v, v1);elsemodify(o <<1|1, mid +1, r, k, v, v1);
t[o]=(t[o <<1]*1ll* t[o <<1|1])% mod;
t1[o]=(t1[o <<1]*1ll* t[o <<1|1]+ t1[o <<1|1])% mod;}
pii merge(pii a, pii b){return{a.first *1ll* b.first % mod,(a.second *1ll* b.first + b.second)% mod};}
pii query(int o,int l,int r,int ql,int qr){if(ql <= l && r <= qr)return{t[o], t1[o]};int mid =(l + r)>>1;if(qr <= mid)returnquery(o <<1, l, mid, ql, qr);if(ql > mid)returnquery(o <<1|1, mid +1, r, ql, qr);returnmerge(query(o <<1, l, mid, ql, qr),query(o <<1|1, mid +1, r, ql, qr));}intmain(){scanf("%d%d",&n,&m);int op, x, y, z;for(int i =1; i <= n;++i)scanf("%d", k + i);for(int i =1; i <= n;++i){scanf("%d",&x);modify(1,1, n, i, k[i], x);}while(m--){scanf("%d%d%d",&op,&x,&y);if(op ==2){
pii ans =query(1,1, n, x, y);printf("%d\n",(ans.first + ans.second)% mod);}elsescanf("%d",&z),modify(1,1, n, x, y, z);}return0;}