QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#581337 | #9373. Query on Tree | PlentyOfPenalty | WA | 1000ms | 64544kb | C++20 | 4.4kb | 2024-09-22 12:07:53 | 2024-09-22 12:07:53 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+10;
const ll INF=1e18,FL=-1e17;
const int D=10;
struct node{
ll tg,mx,ad;
}tb[N<<2],td[N<<2];
int T,n,Q,u,v,op,K,sz[N];
int nw,pb[N],pd[N],b[N],d[N];
int f[D+5][N],l[D+5][N],r[D+5][N];
ll a[N],im[N],tmp;
vector<int>e[N];
void dfs(int x,int fa){
f[1][x]=fa;
sz[x]=1;
pd[x]=++nw;
d[nw]=x;
for(int i:e[x])if(i!=fa){
dfs(i,x);
}
}
queue<int>q;
void bfs(){
q.push(1);
while(!q.empty()){
u=q.front(),q.pop();
pb[u]=++nw;
b[nw]=u;
l[0][u]=r[0][u]=nw;
for(int i:e[u])if(i!=f[1][u])q.push(i);
}
}
void Upd(node*t,int x){
t[x].mx=max(t[x<<1].mx,t[x<<1|1].mx);
}
#define add(p,w) (t[p].tg+=w,t[p].mx+=w)
void Psd(node*t,int x){
if(t[x].tg){
add(x<<1,t[x].tg),add(x<<1|1,t[x].tg);
t[x].tg=0;
}
}
void Build(node*t,int x,int l,int r,int fl){
t[x].tg=t[x].mx=t[x].ad=0;
if(l==r){
if(fl){
t[x].mx=t[x].ad=im[d[l]];
t[x].tg=0;
}else{
t[x].ad=0;
t[x].mx=t[x].tg=a[b[l]];
}
return;
}
int mid=(l+r>>1);
Build(t,x<<1,l,mid,fl),Build(t,x<<1|1,mid+1,r,fl);
Upd(t,x);
}
void Ins(node*t,int x,int l,int r,int ql,int qr,ll v){
if(ql>qr||qr<l||r<ql)return;
if(ql<=l&&r<=qr)return(void)(add(x,v));
Psd(t,x);
int mid=(l+r>>1);
Ins(t,x<<1,l,mid,ql,qr,v),Ins(t,x<<1|1,mid+1,r,ql,qr,v);
Upd(t,x);
}
void Mod(node*t,int x,int l,int r,int id,ll v){
if(l==r)return(void)(t[x].ad=v,t[x].mx=t[x].ad+t[x].tg);
int mid=(l+r>>1);
Psd(t,x);
if(id<=mid)Mod(t,x<<1,l,mid,id,v);
else Mod(t,x<<1|1,mid+1,r,id,v);
Upd(t,x);
}
ll Que(node*t,int x,int l,int r,int ql,int qr){
if(ql>qr||qr<l||r<ql)return -INF;
if(ql<=l&&r<=qr)return t[x].mx;
Psd(t,x);
int mid=(l+r>>1);
return max(Que(t,x<<1,l,mid,ql,qr),Que(t,x<<1|1,mid+1,r,ql,qr));
}
ll Get(node*t,int x,int l,int r,int id){
if(!id)return 0;
if(l==r)return t[x].tg;
int mid=(l+r>>1);
Psd(t,x);
if(id<=mid)return Get(t,x<<1,l,mid,id);
return Get(t,x<<1|1,mid+1,r,id);
}
void Upd_node(int x){
if(!x)return;
Mod(td,1,1,n,pd[x],Que(tb,1,1,n,l[D][x],r[D][x]));
}
ll Upd_int(int l,int r,ll v){
if(l>r)return -INF;
int fa=f[D][b[l]];
Ins(tb,1,1,n,l,r,v);
Upd_node(fa);
return Get(td,1,1,n,pd[fa])+Que(tb,1,1,n,l,r);
}
ll Upd_dis(int x,int d,int dl,int dr,ll v){
int tl=l[d][x],tr=r[d][x];
ll ret=-INF;
if(dr<tl||tr<dl){
ret=max(ret,Upd_int(tl,tr,v));
}else{
ret=max(ret,Upd_int(tl,dl-1,v));
ret=max(ret,Upd_int(dr+1,tr,v));
}
if(d>1)return max(ret,Upd_dis(f[1][x],d-1,l[d-2][x],r[d-2][x],v));
else if(d)return max(ret,Upd_dis(f[1][x],d-1,-1,-1,v));
return ret;
}
ll Upd_dis(int x,int d,ll v){
if(d<0)return -INF;
ll ret=-INF;
ret=max(ret,Upd_int(l[d][x],r[d][x],v));
if(!f[1][x]){
for(int i=d-1;i>=0;--i){
ret=max(ret,Upd_int(l[i][x],r[i][x],v));
}
return ret;
}else if(d){
ret=max(ret,Upd_int(l[d-1][x],r[d-1][x],v));
ret=max(ret,Upd_dis(f[1][x],d-1,v));
}
return ret;
}
ll Upd_sub(int x,ll v){
ll ret=-INF;
for(int i=0;i<=D;++i){
ret=max(ret,Upd_int(l[i][x],r[i][x],v));
}
Ins(td,1,1,n,pd[x],pd[x]+sz[x]-1,v);
ret=max(ret,Que(td,1,1,n,pd[x],pd[x]+sz[x]-1));
return ret;
}
int main(){
cin.sync_with_stdio(0),cin.tie(0);
cin>>T;
while(T--){
cin>>n>>Q;
for(int i=1;i<=n;++i){
vector<int>().swap(e[i]);
im[i]=-INF;
for(int j=1;j<=D;++j){
f[j][i]=0;
l[j][i]=n+1,r[j][i]=0;
}
}
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=1;i<n;++i){
cin>>u>>v;
e[u].push_back(v),e[v].push_back(u);
}
nw=0,dfs(1,0);
nw=0,bfs();
for(int i=1;i<=n;++i){
u=b[i];
f[0][u]=u;
for(int j=2;j<=D;++j)f[j][u]=f[j-1][f[1][u]];
for(int j=1;j<=D;++j){
v=f[j][u];
if(!v)break;
l[j][v]=min(l[j][v],i);
r[j][v]=max(r[j][v],i);
}
if(v=f[D][u])im[v]=max(im[v],a[u]);
}
Build(tb,1,1,n,0);
Build(td,1,1,n,1);
while(Q--){
cin>>op;
if(op==1){
cin>>u>>K>>v;
tmp=Upd_dis(u,K,0,0,v);
}else if(op==2){
cin>>u>>K>>v;
tmp=Upd_dis(u,K,v);
}else{
cin>>u>>v;
tmp=Upd_sub(u,v);
}
if(tmp<FL)cout<<"GG\n";
else cout<<tmp<<"\n";
}
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 46540kb
input:
1 5 5 1 2 1 3 2 1 2 2 3 2 4 4 5 2 2 1 0 1 2 1 3 3 4 -5 2 5 2 3 3 2 -1
output:
3 6 1 5 4
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 64ms
memory: 42536kb
input:
10000 3 9 42973045452542 34994498886390 -91733395797555 1 3 1 2 1 1 5 -71952967 3 1 -816873082 1 1 5 -842437577 2 3 7 254550528 3 3 -854082700 2 3 2 699808309 3 3 554885567 1 2 7 595565507 1 3 0 -318374053 3 2 -63158159333100 77264362049163 -99188430131116 1 2 3 2 2 2 4 -305866230 3 1 -549738403 3 5...
output:
GG 42972228579460 GG 42972483129988 -91734812202809 42973182938297 -91733557508933 GG -91733875882986 77264056182933 77263506444530 7065382376488 7065749360235 7066534912965 -85115611272570 -85114714781312 96492412785032 -20428913156111 -20428197540063 96491742171666 -14945310996805 96491180203461 -...
result:
ok 200000 lines
Test #3:
score: 0
Accepted
time: 75ms
memory: 44512kb
input:
10000 4 32 -1057044448491 -93293078803919 -24212938548357 74427756948193 1 3 1 2 3 4 3 1 -82365883 1 2 9 -730670945 2 4 2 -618745828 2 1 2 774032949 3 3 6733210 3 3 -843683844 3 1 327410390 3 1 -865685600 1 4 6 -951367966 3 2 107763506 1 3 2 721870187 2 3 3 -530847597 2 2 1 451029291 3 2 231297873 3...
output:
74427674582310 GG 74427055836482 74427829869431 74427836602641 74426992918797 74427320329187 74426454643587 GG -93292817648557 -93292095778370 74425923795990 -1057589620769 -93291944298803 74425228504438 74425430401539 -93291936231808 74425906008467 GG -1058067327518 74424997886529 74424370598990 74...
result:
ok 200000 lines
Test #4:
score: 0
Accepted
time: 84ms
memory: 44504kb
input:
10000 5 21 -17119694111919 -49543801764535 15340078463236 -13731655847398 -41385234314814 3 2 1 5 1 4 1 2 3 5 865538081 3 4 551893736 2 3 9 797578233 1 3 0 -657534941 3 4 -507570975 1 1 2 352656478 3 5 951666995 2 5 3 524459610 3 4 819153725 2 4 0 955588629 3 5 -451248313 1 3 0 -251438755 1 4 0 -707...
output:
-41384368776733 -13731103953662 15340876041469 15340218506528 -13730813946404 15340571163006 -41382619531505 15341095622616 -13729470333069 -13728514744440 -41382546320208 15340844183861 -13729221899958 15340255675017 -13729490336654 -13729529150761 -13729624738248 15341124008689 15341173814500 GG -...
result:
ok 200000 lines
Test #5:
score: 0
Accepted
time: 99ms
memory: 46612kb
input:
10000 7 53 -49257878340663 65913602617244 -77586447275975 37912663831730 -29965751459870 -24028915786606 -20711244730875 2 1 3 1 4 6 1 5 7 1 2 4 1 6 4 -614276625 3 7 -430532617 3 3 -970301980 1 1 4 767992650 2 1 4 88036223 2 3 5 -930151770 3 3 -816226996 1 2 1 -696978838 2 1 1 -877781309 2 5 2 58619...
output:
-20711859007500 -20712289540117 -77588031854580 GG 65913690653467 65912760501697 -77589690197123 37911124737345 65911882720388 65912468916628 65911745912774 -29967336843362 65911988615088 GG 37910494006281 65912545393218 -49259038263999 GG 65913255260627 GG GG 65912963550828 -24029074909413 65912862...
result:
ok 200000 lines
Test #6:
score: 0
Accepted
time: 103ms
memory: 44620kb
input:
10000 10 4 71797802165245 -54234031880796 29183815458453 29504172959957 49372193603523 -16185389362615 39453295094243 663036651923 96744787191200 -50620611104201 5 8 5 1 1 2 4 7 7 10 2 4 5 6 3 9 3 2 3 7 -830615007 1 2 6 637860195 2 7 7 -843886558 3 8 273999944 10 8 -33479821641433 91082116968197 -34...
output:
39452464479236 GG 96743943304642 662466765309 91246631814706 -29877405744477 GG GG 91081604757708 GG 91246614330784 -29877381879548 -4361386733251 89595437158302 -4360828297147 19337184792075 89595109336295 89594748412265 19336971357477 89594978989869 86993545918633 -84286253125550 GG GG 52174855696...
result:
ok 200000 lines
Test #7:
score: 0
Accepted
time: 65ms
memory: 44792kb
input:
10000 3 9 42973045452542 34994498886390 -91733395797555 2 3 2 1 3 1 -988613092 1 2 0 308890489 1 1 0 472776476 2 2 2 -122992202 2 3 1 831940219 3 3 -612896282 3 3 -536438981 1 1 0 161104440 2 1 1 354965461 3 2 77441670935132 -63158159333100 77264362049163 3 1 2 1 1 3 4 -20585631 1 1 6 747193249 3 5 ...
output:
42972056839450 34993819163787 42972529615926 42972406623724 34994528111804 -91734288358912 -91734824797893 42972567728164 42972922693625 GG GG GG 7064655135811 -61568732738930 7065157020537 -61568593058530 80122234728388 80122047274326 80122140239806 80121956639200 80121963373184 80121401404979 9259...
result:
ok 200000 lines
Test #8:
score: 0
Accepted
time: 72ms
memory: 42472kb
input:
10000 4 32 -1057044448491 -93293078803919 -24212938548357 74427756948193 3 2 4 1 1 2 1 2 8 639477246 1 4 0 510694922 2 1 0 421373363 2 3 4 -843809269 3 1 -620938865 3 3 -933234989 1 3 3 458028025 1 4 6 -951367966 3 2 107763506 1 3 2 721870187 2 3 3 -530847597 2 2 1 451029291 3 2 231297873 3 1 -69529...
output:
GG 74428267643115 -1056623075128 74427423833846 74426802894981 -24215336531480 74427260923006 GG -24215228767974 -1057365953075 74426730075409 -1057445771381 -24215077288407 74426034783857 74426236680958 -24215069221412 74426712287886 74427585548383 74427327526258 -24215759758547 -24216387046086 744...
result:
ok 200000 lines
Test #9:
score: 0
Accepted
time: 77ms
memory: 42540kb
input:
10000 5 21 -17119694111919 -49543801764535 15340078463236 -13731655847398 -41385234314814 1 2 4 1 5 1 1 3 3 4 -183603675 1 1 6 750831651 2 4 2 -112044052 2 5 0 487266103 2 4 7 623494631 2 3 6 -758745863 2 5 3 524459610 3 4 819153725 2 4 0 955588629 3 5 -451248313 1 3 0 -251438755 1 4 0 -707155518 3 ...
output:
-13731839451073 GG 15339966419184 -41384859092763 15340589913815 15339831167952 15340355627562 -13730743133022 -13729787544393 -41384921132698 15340104188807 -13730494699911 -49544113109053 -13730763136607 15340065374700 -13730897538201 -17118548613921 15340115180511 GG -41384542096059 1534095454059...
result:
ok 200000 lines
Test #10:
score: 0
Accepted
time: 98ms
memory: 44788kb
input:
10000 7 53 -49257878340663 65913602617244 -77586447275975 37912663831730 -29965751459870 -24028915786606 -20711244730875 6 5 6 7 3 6 5 4 5 2 1 7 1 2 1 -902483856 2 2 0 -166019888 1 2 6 773740058 1 7 4 332162805 3 4 483966804 2 1 8 -161176455 2 6 2 999609920 2 2 1 575504367 1 2 2 -125436309 1 7 6 -85...
output:
-29966653943726 65913436597356 GG GG 37913147798534 65913275420901 65914275030821 65914850535188 37913860795690 GG 65915321019354 65915455681128 65915560380329 65915183127659 65914812218108 65915548812492 65916224155305 65915243014798 -20710396693949 GG 65915329685860 65915917517754 65915625807955 6...
result:
ok 200000 lines
Test #11:
score: 0
Accepted
time: 110ms
memory: 46772kb
input:
10000 10 4 71797802165245 -54234031880796 29183815458453 29504172959957 49372193603523 -16185389362615 39453295094243 663036651923 96744787191200 -50620611104201 3 4 3 8 5 10 8 1 6 2 7 6 10 3 8 9 5 7 3 10 272721546 2 10 4 618153907 3 8 763987349 1 9 7 870230974 10 8 -13468051963531 -33479821641433 9...
output:
49372466325069 96745405345107 96746169332456 -54231506787020 91247244061845 91246513437933 -33254303623674 -34062728633884 38205426400070 91082413811192 -13468602472782 GG 86995519872619 10278075155744 86995188030179 86995444966527 19338147521978 86995117144520 86994756220490 19337573163350 -9437093...
result:
ok 200000 lines
Test #12:
score: -100
Wrong Answer
time: 1000ms
memory: 64544kb
input:
5 100000 10278 -33062210930377 -27859969846302 -17580975150961 82421468622525 73124685670220 24605270582441 -85306160207816 -94488582195355 85451638721967 61110610044303 20119327748559 28059853591446 40777043818126 -26083158668773 -86932609818311 -80046664707280 36276301345898 72062141434820 -521113...
output:
99730096363045 -53142619895885 62633703474374 91065884890424 95913832039203 71963014593268 -73718672703414 88512243346245 95865153100847 20076236503631 -34284711719410 39055157031710 89757297384484 10950553757520 74269720205379 -9148723701106 -8854522652340 30148659190315 43163551215290 403669992467...
result:
wrong answer 298th lines differ - expected: '68475350374011', found: '68475939513091'