QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#883463#9638. 线段树与区间加xxzx0 0ms0kbC++236.0kb2025-02-05 16:31:342025-02-05 16:31:34

Judging History

This is the latest submission verdict.

  • [2025-02-05 16:31:34]
  • Judged
  • Verdict: 0
  • Time: 0ms
  • Memory: 0kb
  • [2025-02-05 16:31:34]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
#define clo 1000.*clock()/CLOCKS_PER_SEC
#ifndef xxzx
#define endl '\n'
#endif
using ll=long long;
using PII=pair<int,int>;
const int N=4e5+10;
bool memory1;
template<typename T=int> T read() {
    T f=1,x=0; char ch=getchar();
    while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar(); }
    while(ch>='0'&&ch<='9') { x=x*10+ch-'0', ch=getchar(); }
    return f*x;
}
int n,m,l[N],r[N],ls[N],rs[N],id[N],idfn[N];
unsigned va[N],vb[N],len[N];
struct SegmentTree {
    unsigned res[N<<2],lz[N<<2],f[N<<2],cl[N<<2];
    #define ls (id<<1)
    #define rs (id<<1|1)
    // res = v*f
    void Build(int id,int l,int r) {
        if(l==r) return f[id]=vb[idfn[l]],void();
        int mid=(l+r)>>1;
        Build(ls,l,mid),Build(rs,mid+1,r);
        f[id]=f[ls]+f[rs];
    }
    void pushdown(int id) {
        if(cl[id]) {
            cl[id]=0;
            res[ls]=lz[ls]=0,cl[ls]=1;
            res[rs]=lz[rs]=0,cl[rs]=1;
        }
        if(lz[id]) {
            unsigned val=lz[id]; lz[id]=0;
            res[ls]+=f[ls]*val,lz[ls]+=val;
            res[rs]+=f[rs]*val,lz[rs]+=val;
        }
    }
    void Modify(int id,int l,int r,int x,int y,unsigned val) {
        if(x>y) return;
        if(x<=l&&y>=r) {
            // cerr<<"Modi "<<id<<" "<<l<<" "<<r<<" "<<x<<" "<<y<<" "<<f[id]*val<<" "<<f[id]<<endl;
            res[id]+=f[id]*val,lz[id]+=val;
            return;
        }
        pushdown(id);
        int mid=(l+r)>>1;
        if(x<=mid) Modify(ls,l,mid,x,y,val);
        if(y>mid) Modify(rs,mid+1,r,x,y,val);
        res[id]=res[ls]+res[rs];
    }
    void Clear(int id,int l,int r,int x,int y) {
        if(x>y) return;
        if(x<=l&&y>=r) {
            res[id]=lz[id]=0,cl[id]=1;
            return;
        }
        pushdown(id);
        int mid=(l+r)>>1;
        if(x<=mid) Clear(ls,l,mid,x,y);
        if(y>mid) Clear(rs,mid+1,r,x,y);
        res[id]=res[ls]+res[rs];
    }
    #undef ls
    #undef rs
}sgt;
int sz[N],son[N],fa[N][20],dep[N];
void dfs1(int x,unsigned sum) {
    // cerr<<"Dfs1"<<endl;
    sum+=va[x];
    vb[x]+=sum*len[x],sz[x]=1;
    if(!ls[x]) return;
    for(auto y:{ls[x],rs[x]}) {
        fa[y][0]=x,dep[y]=dep[x]+1;
        dfs1(y,sum);
        sz[x]+=y;
    }
    son[x]=(sz[ls[x]]>=sz[rs[x]])? ls[x]:rs[x];
}
void dfs11(int x) {
    if(!ls[x]) return;
    for(auto y:{ls[x],rs[x]}) {
        vb[x]-=vb[y];
        dfs11(y);
    }
}
int jump(int x,int h) {
    for(int i=0;h;h>>=1,i++) if(h&1) x=fa[x][i];
    return x;
}
int lca(int x,int y) {
    if(dep[x]<dep[y]) swap(x,y);
    x=jump(x,dep[x]-dep[y]);
    if(x==y) return x;
    for(int i=19;i>=0;i--)
        if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
    return fa[x][0];
}
int L[3][N],R[3][N],tim,top[N],vis[N];
void dfs2(int x) {
    // cerr<<"Dfs2 "<<endl;
    vector<int> nd;
    int p=x; vis[p]=1,nd.push_back(p);
    while(son[p]) p=son[p],vis[p]=1,nd.push_back(p);
    for(auto i:nd) L[0][i]=++tim,top[i]=x,idfn[tim]=i;
    for(auto i:nd) R[0][i]=tim;
    for(auto i:nd) {
        L[1][i]=tim+1;
        if(ls[i]&&!vis[ls[i]]) dfs2(ls[i]);
        R[1][i]=tim;
    }
    for(auto i:nd) {
        L[2][i]=tim+1;
        if(rs[i]&&!vis[rs[i]]) dfs2(rs[i]);
        R[2][i]=tim;
    }
}
int rt;
void clear(int x) {  // x 到根全体清空
    while(x) {
        sgt.Clear(1,1,2*n-1,L[0][top[x]],L[0][x]);
        x=fa[top[x]][0];
    }
}
void addsub(int p,unsigned v) {
    // cerr<<"Sub "<<p<<endl;
    // cerr<<L[0][p]<<" "<<R[0][p]<<endl;
    // cerr<<L[1][p]<<" "<<R[1][idfn[R[0][p]]]<<endl;
    // cerr<<L[2][p]<<" "<<R[2][idfn[R[0][p]]]<<endl;
    sgt.Modify(1,1,2*n-1,L[0][p],R[0][p],v);
    sgt.Modify(1,1,2*n-1,L[1][p],R[1][idfn[R[0][p]]],v);
    sgt.Modify(1,1,2*n-1,L[2][p],R[2][idfn[R[0][p]]],v);
}
void add(int x,int y,int op,unsigned v) { // x 到 y 左/右 子树加
    // cerr<<"Add "<<x<<" "<<y<<" "<<op<<" "<<v<<endl;
    int nx=-1;
    while(top[x]!=top[y]) {
        if(((op==1)? ls[x]:rs[x])==nx) x=fa[x][0];
        sgt.Modify(1,1,2*n-1,L[op][top[x]],R[op][x],v);
        if(son[x]&&((op==1)? ls[x]:rs[x])==son[x]) addsub(son[x],v);
        nx=top[x],x=fa[top[x]][0];
    }
    // cerr<<"H "<<x<<" "<<y<<endl;
    if(((op==1)? ls[x]:rs[x])==nx) x=fa[x][0];
    sgt.Modify(1,1,2*n-1,L[op][y],R[op][x],v);
    if(son[x]&&((op==1)? ls[x]:rs[x])==son[x]) addsub(son[x],v);
}
bool memory2;
int main() {

    n=read(),m=read();
    set<pair<PII,int>> seg;
    for(int i=1;i<=2*n-1;i++) {
        l[i]=read(),r[i]=read(),va[i]=read<unsigned>(),vb[i]=read<unsigned>();
        seg.insert({{l[i],r[i]},i});
        len[i]=r[i]-l[i]+1;
        if(l[i]!=r[i]) ls[i]=read(),rs[i]=read();
        if(l[i]==1&&r[i]==n) rt=i;
    }
    dfs1(rt,0);
    dfs11(rt);
    dfs2(rt);
    for(int j=1;j<20;j++) for(int i=1;i<=2*n-1;i++) fa[i][j]=fa[fa[i][j-1]][j-1];
    for(int i=1;i<=2*n-1;i++) if(rs[i]) id[l[rs[i]]]=i;
    id[1]=2*n,id[n+1]=2*n+1,dep[2*n]=dep[2*n+1]=-1;
    // for(int i=1;i<=2*n-1;i++) cerr<<idfn[i]<<" ";
    // cerr<<endl;
    // for(int i=1;i<=2*n-1;i++) cerr<<son[i]<<" ";
    // cerr<<endl;
    sgt.Build(1,1,2*n-1);
    // unsigned val=(vb[3]+vb[4]+vb[5]+vb[7]);
    // cerr<<val<<endl;
    // m=1;
    // return 0;
    for(int _=1,l,r,v;_<=m;_++) {
        l=read(),r=read(),v=read();
        auto it=seg.lower_bound({{l,r},0});
        if(it!=seg.end()&&it->first==make_pair(l,r)) {
            int p=it->second;
            clear(fa[p][0]);
            // cerr<<"P "<<p<<endl;
            addsub(p,v);
        }
        else {
            int x=id[l],y=id[r+1],z=((max(x,y)<=2*n-1)? lca(x,y):max(x,y));
            // cerr<<"A "<<x<<" "<<y<<endl;
            if(x<=2*n-1&&x!=z) { clear(x),add(x,jump(x,dep[x]-dep[z]-1),2,v); }
            if(y<=2*n-1&&y!=z) { clear(y),add(y,jump(y,dep[y]-dep[z]-1),1,v); }
        }
        cout<<sgt.res[1]<<endl;
    }

    #ifdef xxzx
    cerr<<"Time: "<<clo<<"MS"<<endl;
    cerr<<"Memory: "<<abs(&memory1-&memory2)/1024./1024.<<"MB"<<endl;
    #endif
    return 0;
}

详细


Pretests


Final Tests

Test #1:

score: 0
Runtime Error

input:

2000 2000
1793 1798 1262660447 3355636366 3629 1228
103 1852 1180930258 1265499397 1821 3806
680 680 2673755170 3193571303
737 740 3064103572 3343535318 1993 502
1720 1721 3117882744 1227116751 3561 1857
117 117 2249090646 234980450
1897 1901 87845907 4069299503 2523 1140
1832 1835 981230847 3022191...

output:


result:


Test #2:

score: 0
Runtime Error

input:

2000 2000
372 372 0 989361745
268 744 0 2134086804 3992 1151
929 932 0 3450655381 1108 1775
1527 1527 0 2098122263
261 264 0 767043297 3813 2562
1011 1013 0 1426875762 997 1431
160 160 0 2574808476
1660 1770 0 2181120880 1536 69
1650 1650 0 3634539115
811 811 0 4269292508
518 518 0 3874323908
248 25...

output:


result:


Test #3:

score: 0
Runtime Error

input:

2000 2000
1045 1046 0 2632377141 2540 3747
1673 1674 0 1669064774 1585 1359
1737 1737 0 4187517691
134 134 0 1381105987
1678 1678 0 3194199856
629 632 0 1039365507 1669 3337
1224 1225 0 2056342816 2564 1715
501 1491 0 2746594998 563 3172
1859 1860 0 1399867507 3486 1239
377 377 0 4114286174
266 266 ...

output:


result:


Test #4:

score: 0
Runtime Error

input:

2000 2000
1922 1923 4154142567 0 624 1116
1611 1625 1842722647 0 1405 1312
101 102 328256453 0 3110 2786
859 860 1546215739 0 489 2099
1154 1157 4134074442 0 341 792
531 532 1656285477 0 1961 1533
451 454 2149232978 0 3570 253
496 496 12489066 0
1697 1700 2769881303 0 2485 3845
1232 1232 4274380990 ...

output:


result:


Test #5:

score: 0
Runtime Error

input:

2000 2000
1516 1516 786840671 0
546 547 533550872 0 3506 319
947 952 3586638444 0 1398 2922
1769 1777 1598495528 0 2351 3492
1487 1488 3433976236 0 2998 372
266 268 4081199540 0 3034 1376
9 11 16162852 0 2016 2453
606 606 868772445 0
500 501 1406522390 0 1201 3967
1448 1449 2080781326 0 1547 1988
22...

output:


result:


Test #6:

score: 0
Runtime Error

input:

40000 40000
19061 19064 2717945240 3834098532 59850 71996
14933 14933 877340266 1841904212
34098 34170 3550522541 2738188651 75607 2753
4691 4691 530532762 675854163
9890 9890 2833834223 2233457146
14140 14140 1300081732 193421532
1623 1623 1598527863 3121134528
4929 4929 1218079042 439770536
324 39...

output:


result:


Test #7:

score: 0
Runtime Error

input:

40000 40000
37504 37504 0 2993769426
14320 14322 0 3704545631 44050 52152
2757 37130 0 1236105917 2455 3677
884 884 0 4026492894
10076 10077 0 609448457 7650 75701
16404 16404 0 245461674
22018 22018 0 2771692605
1501 1501 0 2419888954
16860 16861 0 1871411848 33204 21442
15067 15068 0 1175031405 20...

output:


result:


Test #8:

score: 0
Runtime Error

input:

40000 40000
20206 20206 0 4103926985
25572 25573 0 1124285259 79417 25683
23524 23524 0 2945938453
26314 26316 0 3769707656 62994 20223
1933 1933 0 3202000408
12690 27072 0 663839624 50239 60259
27007 27013 0 1608124753 48394 32123
1283 1284 0 4010999538 17252 36084
11373 11375 0 3200987115 25973 22...

output:


result:


Test #9:

score: 0
Runtime Error

input:

40000 40000
28600 31103 398400104 0 50206 67695
18214 18214 987691543 0
21117 21117 2501164446 0
35971 35972 884844107 0 49942 386
17501 17501 4216208706 0
12649 12649 3198897355 0
1690 1695 1689582721 0 30803 36361
33084 33084 2651714130 0
26656 26660 3389387136 0 27495 17328
32764 32764 2921506964...

output:


result:


Test #10:

score: 0
Runtime Error

input:

40000 40000
24203 24203 1353036479 0
30073 30082 1740596718 0 53750 62241
11650 11652 3664808690 0 7271 53525
17686 17686 2170088447 0
14215 14215 877899577 0
10389 14544 1220290260 0 2779 34931
17557 17561 3312844542 0 9486 56774
37025 37026 360931058 0 52630 1863
8544 8545 2355582057 0 34372 13606...

output:


result:


Test #11:

score: 0
Time Limit Exceeded

input:

200000 200000
32600 32601 279707947 3333652085 81223 369345
107195 110357 2797643167 3204100200 211635 180774
50076 50076 3586231592 2031356328
9086 9086 2226760698 457985624
89785 143170 2137446218 370802330 339432 56185
15190 19580 3336566407 2687475581 239505 274514
199717 199717 1343907462 27476...

output:

2009836216
3727996800
3450134793
3406485732
1123726936
1170973510
764967399
1336588779
917647199
2249365950
2934805008
1625886692
2425348432
3997654416
3288567872
3719461083
228163419
1349877510
2715061693
3905289161
813191337
1445005585
1078905575
3999781666
3626536053
3480952270
1200888304
7849245...

result:


Test #12:

score: 0
Time Limit Exceeded

input:

200000 200000
103447 103448 0 2671179003 304649 129499
145911 145911 0 1121422691
157741 157744 0 1929193038 145603 72009
11904 11905 0 2289998670 146636 237088
122867 122868 0 186090819 413 270761
193873 193873 0 203093844
20838 20838 0 2999266101
92497 92498 0 2375994881 321423 197661
10185 10185 ...

output:

1287630144
1911410702
2542412142
2949149180
2597050152
1479226049
699517062
1840378744
3561042026
2295091954
1476949713
318057754
3160099934
2529106282
1409773717
2979058284
254069790
2408520951
767089333
2745981939
2707418577
350113395
2245460988
2655942395
3685437519
3972634965
351126485
128739571...

result:


Test #13:

score: 0
Time Limit Exceeded

input:

200000 200000
190183 190188 0 1706040846 362170 41622
150705 150705 0 2188179441
148325 148330 0 2355075143 61581 324431
190406 190407 0 1131747042 383315 217073
23144 23152 0 1897327529 396050 285637
93051 93051 0 1804212175
186538 186541 0 3315936642 306793 151829
45692 45692 0 1239029798
30972 30...

output:

2075029659
3550857507
3975089737
1922279342
534671262
1315305932
3932082574
576645640
1491251464
1599102206
2909848918
2484431669
2562655797
1342243997
95469720
3085411021
4220881397
2707863723
509188519
2382632511
2493078850
3595217833
1848800013
4146508855
3672985783
880937040
2586434528
940969940...

result:


Test #14:

score: 0
Time Limit Exceeded

input:

200000 200000
90506 102530 236918570 0 337847 201999
50479 50482 1884914043 0 242965 18370
197965 197965 1150415084 0
181841 181841 524351831 0
43868 43886 3739237894 0 365544 340081
104279 104279 1518148351 0
34148 34154 3970381744 0 379789 218872
73698 73698 3847658012 0
71224 71225 2029945887 0 3...

output:

2255959540
776843588
1939762368
407450021
2416728973
3351051967
238272039
3173214263
964780820
2479009385
2078308329
1085718897
3336408401
2469655047
3702885352
590105323
625121410
2752075115
3402348887
2538671649
3018668433
680197831
421512740
52919903
1904990371
2601865274
2699800194
868148810
207...

result:


Test #15:

score: 0
Time Limit Exceeded

input:

200000 200000
184636 184636 470383782 0
69147 163622 581509052 0 286341 357499
95155 95155 577954429 0
126294 126294 3693354981 0
184618 187568 3886149811 0 333358 166507
188512 188512 303047117 0
20400 20400 3407789462 0
44704 44705 1224895264 0 162096 75280
133755 133757 109227272 0 132577 372294
...

output:

3881118135
3222757985
114387977
2262724873
1481024296
3192177672
1825099959
3248957793
800918233
2409713038
1720265294
846986202
3604862840
2795825247
2843485417
302001729
4214926529
1468759477
2241022395
1641387459
929124036
182926454
8909911
3676263238
36476901
4207789233
2593381466
1110673084
829...

result:


Test #16:

score: 0
Runtime Error

input:

200000 200000
30492 35854 729190907 1956530869 220290 207964
178288 178288 793919639 4043397768
4965 4965 2255872372 819681301
64878 99465 669086428 517288923 75560 27338
13595 16760 415742798 3804064469 203533 253759
154291 154293 601666143 200879632 289484 190128
121100 121101 2476950350 105407364...

output:


result:


Test #17:

score: 0
Runtime Error

input:

200000 200000
158994 158994 0 2397655320
165026 165026 0 1247467790
193088 193089 0 1131792894 25325 134960
34834 34834 0 1974874050
106908 106908 0 158855686
73570 73571 0 660499851 32725 33730
126276 126276 0 2799927501
183868 183870 0 2792433045 319704 248051
145831 145832 0 796369972 384435 1211...

output:


result:


Test #18:

score: 0
Runtime Error

input:

200000 200000
42026 42026 0 103840682
115527 115527 0 730801603
175286 175286 0 952465904
115721 115722 0 3887082779 210578 202527
14017 17027 0 2717984672 155430 298216
113340 113340 0 1196664755
143222 143224 0 1622284707 237907 258953
115973 115975 0 2441078898 207848 192004
54478 54478 0 3169258...

output:


result:


Test #19:

score: 0
Runtime Error

input:

200000 200000
92524 92524 182603024 0
116778 116778 2576939405 0
10207 10207 1898802503 0
178036 178038 1935186518 0 44870 317892
137541 137544 2674676024 0 210860 64999
68085 68085 1958593201 0
179926 179929 2584382023 0 185913 349215
45422 45423 2495993608 0 157833 264143
109854 121340 113104103 0...

output:


result:


Test #20:

score: 0
Runtime Error

input:

200000 200000
12387 12389 2109068107 0 384829 227596
26592 26594 2550267931 0 57077 72658
80444 80444 1329109323 0
119995 119995 4165698375 0
48876 48876 766047886 0
155836 155836 3512049107 0
50100 50100 1831955483 0
193088 193089 3589455426 0 34273 140648
126549 126549 1726763169 0
149430 154350 1...

output:


result:


Test #21:

score: 0
Runtime Error

input:

200000 200000
165129 165131 3633865218 98447901 160942 69260
170590 170592 2878276602 4164208122 147121 65383
199006 199017 3624152661 4138881358 49640 64235
92616 137590 1278705205 1262535969 229078 92015
12733 12733 1753647128 400573041
138294 138294 503689729 1701121075
178554 185671 951413620 10...

output:


result:


Test #22:

score: 0
Runtime Error

input:

200000 200000
42616 42616 0 4073548647
148817 148819 0 678516345 137141 295278
136568 136568 0 1311526245
162591 162591 0 1123778942
152429 152430 0 865424725 274628 226053
123226 123226 0 1843160929
3315 3315 0 2548140955
158521 158522 0 726899994 308692 139695
128630 128630 0 3560425273
137094 137...

output:


result:


Test #23:

score: 0
Runtime Error

input:

200000 200000
92930 92933 0 945338790 270177 344831
44586 44586 0 2120126372
80169 80169 0 3407810035
173606 173606 0 2056188474
144888 144888 0 1376882346
9586 9586 0 2496173660
67542 67542 0 3278572994
95705 95705 0 2103944675
73814 73815 0 4244900263 66623 87248
149429 149431 0 2014898776 8786 61...

output:


result:


Test #24:

score: 0
Runtime Error

input:

200000 200000
182457 182458 3070241886 0 235330 232917
130450 160512 2343593919 0 288610 262204
86835 86836 2084902783 0 271317 299422
39111 91715 827843559 0 14965 357810
131676 131677 2889067161 0 266237 6055
88274 88274 4216568292 0
119859 119861 3636500316 0 297047 394521
30700 112091 528067902 ...

output:


result:


Test #25:

score: 0
Runtime Error

input:

200000 200000
16728 16728 2942007300 0
176509 176509 1919353043 0
102679 102679 3974389408 0
182519 182519 1184106257 0
83079 83089 1520374942 0 181757 4901
35926 35926 2259226600 0
33932 33933 3693656209 0 101981 2261
1804 1805 4038337356 0 92067 46297
15141 15143 4117148560 0 172165 356831
59008 5...

output:


result: