QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#820475 | #9727. Barkley III | solar_express# | TL | 1725ms | 48424kb | C++23 | 3.9kb | 2024-12-18 21:34:08 | 2024-12-18 21:34:08 |
Judging History
answer
#include<bits/stdc++.h>
#define ll unsigned long long
#define N 1000005
#define bd 63
using namespace std;
int n,q,tp;
ll a[N];
ll tr[N<<3],tg[N<<3];
ll mx=(1ull<<63)-1;
// int totcnt;
void pushup(int x){
tr[x]=tr[x<<1]&tr[x<<1|1];
}
void pushdown(int x){
tr[x<<1]&=tg[x];
tr[x<<1|1]&=tg[x];
tg[x<<1]&=tg[x];
tg[x<<1|1]&=tg[x];
tg[x]=mx;
}
void modify(int x,int l,int r,int L,int R,ll v){
// ++totcnt;
if(l==r&&tp==2){
tr[x]=a[l]; tg[x]=mx;
return;
}
if(L<=l&&r<=R){
tr[x]&=v,tg[x]&=v;
return;
}
pushdown(x);
int mid=l+r>>1;
if(L<=mid) modify(x<<1,l,mid,L,R,v);
if(R>mid) modify(x<<1|1,mid+1,r,L,R,v);
pushup(x);
}
ll qry(int x,int l,int r,int L,int R){
// ++totcnt;
if(L<=l&&r<=R) return tr[x];
pushdown(x);
int mid=l+r>>1;
if(R<=mid) return qry(x<<1,l,mid,L,R);
if(L>mid) return qry(x<<1|1,mid+1,r,L,R);
return qry(x<<1,l,mid,L,R)&qry(x<<1|1,mid+1,r,L,R);
}
int getnxt(int x,int l,int r,int pos,int bit){
// ++totcnt;
// if(bit==0){
// cerr<<"fking: "<<x<<" "<<l<<" "<<r<<" "<<pos<<'\n';
// }
if(l==r){
if(tr[x]&(1ull<<bit)) return -1;
else return l;
}
pushdown(x);
int mid=l+r>>1;
if(pos>mid||tr[x<<1]&(1ull<<bit)) return getnxt(x<<1|1,mid+1,r,pos,bit);
int res=getnxt(x<<1,l,mid,pos,bit);
if(res==-1) res=getnxt(x<<1|1,mid+1,r,pos,bit);
return res;
}
int getpre(int x,int l,int r,int pos,int bit){
// ++totcnt;
if(l==r){
if(tr[x]&(1ull<<bit)) return -1;
else return l;
}
pushdown(x);
int mid=l+r>>1;
if(pos<=mid||tr[x<<1|1]&(1ull<<bit)) return getpre(x<<1,l,mid,pos,bit);
int res=getpre(x<<1|1,mid+1,r,pos,bit);
if(res==-1) res=getpre(x<<1,l,mid,pos,bit);
return res;
}
vector<pair<int,ll> > v1,v2;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>q;
tp=2;
for(int i=1;i<=n;++i){
cin>>a[i];
modify(1,1,n,i,i,a[i]);
}
// cerr<<qry(1,1,n,1,n)<<'\n';
while(q--){
int l,r;
ll x;
cin>>tp;
if(tp==1){
cin>>l>>r>>x;
modify(1,1,n,l,r,x);
}else if(tp==2){
cin>>l>>x;
a[l]=x;
modify(1,1,n,l,l,x);
}else{
cin>>l>>r;
v1.clear(),v2.clear();
ll V1=qry(1,1,n,l,l),V2=qry(1,1,n,r,r);
for(int i=0;i<bd;++i){
int p=l;
if(V1&(1ull<<i)){
p=getnxt(1,1,n,l,i);
if(p==-1) p=n+1;
}
v1.push_back(make_pair(p,(1ull<<i)));
}
for(int i=0;i<bd;++i){
int p=r;
if(V2&(1ull<<i)){
p=getpre(1,1,n,r,i);
if(p==-1) p=0;
}
v2.push_back(make_pair(p,(1ull<<i)));
}
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
for(int i=1;i<bd;++i) v2[i].second|=v2[i-1].second;
for(int i=bd-2;i>=0;--i) v1[i].second|=v1[i+1].second;
// cerr<<"v1:\n";
// for(auto [pos,v]:v1)
// cerr<<pos<<" "<<v<<'\n';
// cerr<<"v2:\n";
// for(auto [pos,v]:v2)
// cerr<<pos<<" "<<v<<'\n';
int pos=-1;
ll ans=0;
while(pos+1<bd&&v2[pos+1].first<=l) ++pos;
if(pos!=-1){
ans=v2[pos].second;
}
for(int i=0;i<bd;++i){
if(v1[i].first>r+1) break;
while(pos+1<bd&&v2[pos+1].first<=v1[i].first) ++pos;
if(pos>=0&&v2[pos].first<=v1[i].first) ans=max(ans,v1[i].second&v2[pos].second);
}
cout<<ans<<'\n';
}
}
// cerr<<totcnt<<'\n';
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 7700kb
input:
5 9 7 7 7 6 7 3 1 5 2 1 3 3 1 5 3 1 3 1 1 2 3 3 1 3 2 2 8 3 1 3 3 1 2
output:
7 6 7 3 3 8
result:
ok 6 lines
Test #2:
score: 0
Accepted
time: 1ms
memory: 7636kb
input:
10 10 6760061359215711796 1568091718842717482 1568091718842717482 1568091718842717482 5232472783634052627 8795942500783873690 1568091718842717482 1568091718842717482 1568091718842717482 1568091718842717482 1 3 5 7587422031989082829 3 6 10 1 7 8 5197616143400216932 2 4 2518604563805514908 2 2 4533959...
output:
1568091718842717482 35184908959744 176025477579040 8795942500783873690
result:
ok 4 lines
Test #3:
score: 0
Accepted
time: 2ms
memory: 7604kb
input:
100 100 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 625967318191814868 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072...
output:
576531121047601152 1 576460752303423488 4263579105072360993 1306043896232411137 4263579105072360993 576531121047601152 633397148123136 0 1153488865559840256 1152922054496880128 1730020640668059136 3533641810948498945 67108864 1730020640668059136 0 633397148123136 1729382296723653632 0 17300206406680...
result:
ok 78 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 7644kb
input:
1000 1000 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3639580211161047627 3368486440884437410 3368486440884437410 3368486440...
output:
3368486440884437410 3368486440884437410 3368486440884437410 2251799981457408 0 0 3368486440884437410 0 3326828075601101216 592509842556584322 0 0 0 0 0 0 37154696925806592 0 0 0 3368486440884437410 0 0 3368486440884437410 0 578998425140330496 0 0 134217728 0 3368486440884437410 2306405959167115264 0...
result:
ok 732 lines
Test #5:
score: 0
Accepted
time: 145ms
memory: 13520kb
input:
100000 100000 4364025563773184234 7745126251050571359 5111681002836044963 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7222555899134537718 7745126251050571359 686495...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4613942216556019776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 75105 lines
Test #6:
score: 0
Accepted
time: 1725ms
memory: 46736kb
input:
1000000 1000000 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8796093022208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 576460754450907136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
ok 749866 lines
Test #7:
score: 0
Accepted
time: 1623ms
memory: 48348kb
input:
1000000 1000000 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 815888006180307319 6478641409915854014 6478641409915854014 37784...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 749822 lines
Test #8:
score: 0
Accepted
time: 1655ms
memory: 48424kb
input:
1000000 1000000 8129239286682760854 3981028880940170401 2535635990161413927 8316479514668652599 5147316903112543089 4630570098268037408 8505388156841465368 2203883581249948495 581610100009626881 5079268521394939 1476469952815397946 4914699404295060276 4440084747042452220 2702894635900623841 90540586...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 749812 lines
Test #9:
score: 0
Accepted
time: 1661ms
memory: 48264kb
input:
1000000 1000000 7320373167365396487 7320373167365396487 937526916087788458 7320373167365396487 7320373167365396487 7320373167365396487 6758767667984378025 7320373167365396487 7320373167365396487 7320373167365396487 5687396935769483606 1467370155631201061 3556475128226340387 2212274051825085385 77978...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 748638 lines
Test #10:
score: 0
Accepted
time: 1ms
memory: 7760kb
input:
2 2 3937866409909043622 2873041425983999763 2 2 3645842096674595914 2 1 5018240021376355677
output:
result:
ok 0 lines
Test #11:
score: 0
Accepted
time: 1636ms
memory: 48356kb
input:
1000000 1000000 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900...
output:
4900813446099088166 4899930503817200418 4900813446099088166 4899916948900413730 4899916948900413730 4899930503817200418 4899930503817200418 4899930503817200418 4899930503817200418 4900813446099088166 288230380446679040 288230380446679040 4899930503817200418 4899930503817200418 0 768 768 288230724044...
result:
ok 748697 lines
Test #12:
score: 0
Accepted
time: 1645ms
memory: 48264kb
input:
1000000 1000000 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896...
output:
4896682234503638342 4896682234503638342 4896682234503638342 82333682484117506 4896682234503638342 82333682484117506 9150188513918978 9150188513918978 4896682234503638342 4896682234503638342 9150188513918978 4896682234503638342 9150188513918978 4896682234503638342 4896682234503638342 9150188513918978...
result:
ok 748737 lines
Test #13:
score: 0
Accepted
time: 1663ms
memory: 48332kb
input:
1000000 1000000 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828...
output:
5828086749355423563 8192 0 0 1152921504793493761 0 0 0 134217728 5828086749355423563 4647719230811407937 0 0 0 0 4647719230811407937 4611686018427396096 0 0 4415226380288 0 0 0 0 4665729214006427657 0 0 4665729213955833856 0 4665733612138661120 0 0 4611686018429485056 4666015104295802624 0 0 0 0 0 4...
result:
ok 749804 lines
Test #14:
score: 0
Accepted
time: 1652ms
memory: 48372kb
input:
1000000 1000000 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970...
output:
18014398510006272 1970703737173261435 1970703737173261435 18014398510006272 1170935903116331008 1170935903116331008 1242993501449496576 72057598332903424 72127962782629888 72057594037927936 72057598333165568 70405251923968 0 0 0 0 0 0 0 673367418922088530 72127962782892032 18014398509481984 0 704052...
result:
ok 749806 lines
Test #15:
score: 0
Accepted
time: 1691ms
memory: 48280kb
input:
1000000 1000000 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268...
output:
1191203210145169410 0 0 0 0 0 0 0 8589934592 705069918064678 704786953404416 0 0 1268538845505400998 1268538845505400998 4503633987117056 8589934592 0 633318697730048 2251804108783616 0 0 0 0 4503599627374592 0 0 0 0 704791248371712 1099511627776 0 0 0 1268538845505400998 0 0 633318731153408 1268538...
result:
ok 749818 lines
Test #16:
score: 0
Accepted
time: 1642ms
memory: 48336kb
input:
1000000 1000000 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796...
output:
0 0 0 0 0 0 0 0 0 0 4612249037637189632 0 0 0 0 0 0 144115189706063880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8219350795484238412 0 0 0 536870912 0 0 0 0 0 0 8214847195317895748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144115188092633600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 749921 lines
Test #17:
score: 0
Accepted
time: 1639ms
memory: 48264kb
input:
1000000 1000000 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 324259173170675712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288231492843216896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144115188075864064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
ok 749798 lines
Test #18:
score: -100
Time Limit Exceeded
input:
1000000 1000000 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451...
output:
504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 292733989738811392 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866...