QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#766436#4898. 基础图论练习题hhoppitree48 103ms30052kbC++174.2kb2024-11-20 17:19:312024-11-20 17:19:33

Judging History

你现在查看的是最新测评结果

  • [2024-11-20 17:19:33]
  • 评测
  • 测评结果:48
  • 用时:103ms
  • 内存:30052kb
  • [2024-11-20 17:19:31]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

const int P = 998244353;
const long long INF = 2e18;

void simpl(vector<long long> &x) {
    sort(x.begin(), x.end()), x.erase(unique(x.begin(), x.end()), x.end());
}

typedef pair<long long, long long> Info;

long long calcCC(long long n, vector<long long> &D) {
    priority_queue<Info, vector<Info>, greater<Info> > pq;
    for (auto x : D) {
        if (x) pq.push({x, x});
    }
    D.clear();
    long long dlt = 0, res = 0;
    while (!pq.empty()) {
        auto [d0, ori] = pq.top(); pq.pop();
        d0 -= dlt;
        if (!d0 || d0 >= n) continue;
        D.push_back(ori);
        long long d1 = pq.empty() ? INF : pq.top().first - dlt, v = min(d1, n) / d0 * d0;
        dlt += v, n -= v, pq.push({d0 + dlt, ori});
        if (d0 > n) {
            res = (res + d0 - n) % P;
        }
    }
    simpl(D);
    return (res + n) % P;
}

typedef vector<long long> Bundle;
typedef vector<Bundle> Meta;

vector<Info> getCC(long long n, vector<long long> D, Bundle x) {
    priority_queue<long long, vector<long long>, greater<long long> > pq(D.begin(), D.end());
    long long dlt = 0;
    int m = x.size();
    vector<Info> res;
    for (int i = 0; i < m; ++i) res.push_back({x[i], x[i]});
    while (!pq.empty()) {
        auto d0 = pq.top(); pq.pop();
        d0 -= dlt;
        if (!d0 || d0 >= n) continue;
        long long tn = n, d1 = pq.empty() ? INF : pq.top() - dlt, v = min(d1, n) / d0 * d0;
        dlt += v, n -= v, pq.push(d0 + dlt);
        for (auto &[a, b] : res) {
            if (a >= tn || (a < d0 || a < n)) continue;
            a -= (a - max(n, d0)) / d0 * d0;
            if (a >= d0 && a >= n) a -= d0;
        }
    }
    return res;
}

long long n, res;
vector<long long> ta;
vector< vector<long long> > D = {{}};
vector< array<long long, 3> > E2;

Meta split(int ver, Bundle x) {
    if (x.empty()) return {};
    Meta ret;
    vector<Info> now = getCC(n, D[ver], x), z;
    sort(now.begin(), now.end());
    auto Rside = [&](auto vec) {
        Bundle Ret;
        for (auto [a, b] : vec) Ret.push_back(b);
        return Ret;
    };
    for (auto [fi, se] : now) {
        if (!z.empty() && fi != z.back().first) {
            ret.push_back(Rside(z));
            z.clear();
        }
        z.push_back({fi, se});
    }
    ret.push_back(Rside(z));
    return ret;
}

void solve(int L, int R, Meta x) {
    if (L > R || x.size() <= 1) return;
    if (L == R) {
        for (auto tx : x) {
            for (auto y : tx) {
                if (y != tx[0]) res -= ta[L], E2.push_back({ta[L], y, tx[0]});
            }
        }
        return;
    }
    int mid = (L + R) >> 1;
    Meta le, ri;
    for (auto tx : x) {
        Meta dta = split(mid, tx);
        for (auto y : dta) le.push_back(y);
        Bundle pnt;
        for (auto y : dta) pnt.push_back(y[0]);
        if (!pnt.empty()) ri.push_back(pnt);
    }
    solve(L, mid, le), solve(mid + 1, R, ri);
}

signed main() {
    int m1, m2; scanf("%lld%d%d", &n, &m1, &m2);
    vector< pair<long long, long long> > E1(m1);
    for (auto &[x, y] : E1) scanf("%lld%lld", &y, &x);
    sort(E1.begin(), E1.end());
    long long lst = n % P;
    for (int i = 0; i < m1; ++i) {
        ta.push_back(E1[i].first);
        D.back().push_back(E1[i].second);
        long long now = calcCC(n, D.back());
        D.push_back(D.back());
        res = (res + (lst - now) % P * E1[i].first) % P;
        lst = now;
    }
    E2.resize(m2);
    vector<long long> pnt;
    for (auto &[x, y, z] : E2) {
        scanf("%lld%lld%lld", &y, &z, &x);
        pnt.push_back(y), pnt.push_back(z);
    }
    simpl(pnt);
    solve(0, m1 - 1, split(m1 - 1, pnt));
    auto getId = [&](long long x) {
        return lower_bound(pnt.begin(), pnt.end(), x) - pnt.begin();
    };
    sort(E2.begin(), E2.end());
    vector<int> fa(pnt.size());
    iota(fa.begin(), fa.end(), 0);
    auto find = [&](auto self, int x) -> int {
        return fa[x] == x ? x : fa[x] = self(self, fa[x]);
    };
    for (auto [x, y, z] : E2) {
        y = find(find, getId(y)), z = find(find, getId(z));
        if (y != z) res += x, fa[y] = z;
    }
    printf("%lld\n", (res % P + P) % P);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 4
Accepted
time: 103ms
memory: 29392kb

input:

161199 9 46510
147335 540442844
159493 801351455
149342 821625305
128476 843250712
95524 275754315
139315 106523502
93575 680460786
155498 328812257
146020 410466645
79992 141967 50596784
152210 68644 268349216
72549 96959 42994091
93869 27394 945120577
2909 81886 270684270
12735 35026 871917997
974...

output:

359714743

result:

ok 1 number(s): "359714743"

Test #2:

score: 0
Wrong Answer
time: 33ms
memory: 9216kb

input:

168549 9 49402
160577 34610415
114623 670751010
74448 676966248
53782 845469137
130729 375561046
31610 261496571
134601 154875802
136129 905308676
166248 499420220
69637 72676 875637640
160442 125460 1269794
146261 61770 714794725
137610 1291 490170432
162092 81850 488118013
106400 48193 276190368
4...

output:

451853697

result:

wrong answer 1st numbers differ - expected: '520439176', found: '451853697'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 6
Accepted

Test #11:

score: 6
Accepted
time: 0ms
memory: 3780kb

input:

569435269457904707 2 0
490445920091092693 772271583
144842828305643603 609043885

output:

884694794

result:

ok 1 number(s): "884694794"

Test #12:

score: 6
Accepted
time: 0ms
memory: 3760kb

input:

946929772456816659 2 0
589193907831915013 196301185
485768367910597533 207014034

output:

790540706

result:

ok 1 number(s): "790540706"

Test #13:

score: 6
Accepted
time: 0ms
memory: 4108kb

input:

693038683299151358 2 0
654733556025919068 724998910
450253521190874799 187460097

output:

122292064

result:

ok 1 number(s): "122292064"

Test #14:

score: 6
Accepted
time: 0ms
memory: 4104kb

input:

572269482188906358 2 0
545978502848607475 331750201
488577730099900109 477584735

output:

429885702

result:

ok 1 number(s): "429885702"

Test #15:

score: 6
Accepted
time: 0ms
memory: 3816kb

input:

984888155303961325 2 0
421568681423492040 823358650
324408005979881943 905919848

output:

551223124

result:

ok 1 number(s): "551223124"

Test #16:

score: 6
Accepted
time: 0ms
memory: 3820kb

input:

968068649251960108 2 0
932666179822285222 303897491
422068063538287737 405622211

output:

516717723

result:

ok 1 number(s): "516717723"

Test #17:

score: 6
Accepted
time: 0ms
memory: 3856kb

input:

973235486287221374 2 0
604729607242747292 566399250
440704799734330948 93237801

output:

772791524

result:

ok 1 number(s): "772791524"

Test #18:

score: 6
Accepted
time: 0ms
memory: 3856kb

input:

980842002786834388 2 0
921076927921054095 989436809
917078581302025088 354268450

output:

387335763

result:

ok 1 number(s): "387335763"

Test #19:

score: 6
Accepted
time: 0ms
memory: 3816kb

input:

584600268153835325 2 0
436736455094118542 788823700
379215887395241676 440751386

output:

178749302

result:

ok 1 number(s): "178749302"

Test #20:

score: 6
Accepted
time: 0ms
memory: 3860kb

input:

984888155303961325 2 0
421568681423492040 823358650
324408005979881943 905919848

output:

551223124

result:

ok 1 number(s): "551223124"

Subtask #4:

score: 18
Accepted

Dependency #3:

100%
Accepted

Test #21:

score: 18
Accepted
time: 55ms
memory: 22032kb

input:

569435269457904707 2 48002
490445920091092693 772271583
144842828305643603 609043885
71626464779726163 20936760728342582 933619218
254533877531926689 561120543297327423 444805145
102181371350776436 64807827761321835 63236550
442490347461393187 274703226312639148 379888813
153103619447430279 56932615...

output:

264605976

result:

ok 1 number(s): "264605976"

Test #22:

score: 18
Accepted
time: 57ms
memory: 22284kb

input:

504260032580621389 2 49361
270823699250720124 30858888
336528726133157676 686676838
411951311400351555 331964440631830249 849153007
395362490592741772 476242043133170955 233632950
183299785979517028 300783233878432816 890373397
101096990546501308 294220083765028120 482548478
30494794811726538 492575...

output:

374280020

result:

ok 1 number(s): "374280020"

Test #23:

score: 18
Accepted
time: 58ms
memory: 21976kb

input:

908984547406193258 2 49006
553146168947167785 921235648
439052241502823206 685482302
602040034167963673 319806281814227523 602421493
889680730869149610 662785644521343266 319100701
855861307841385482 123218837422189032 958395288
789474388061739888 886525713531875881 485625803
506682328285523072 8679...

output:

411258291

result:

ok 1 number(s): "411258291"

Test #24:

score: 18
Accepted
time: 52ms
memory: 21012kb

input:

645595087071518014 2 46364
502798671238091149 130131399
324145073511001064 249141640
529562079328876365 298584769486918994 793053817
104449532477780267 612956797119263913 599706657
537335025824879813 509591120306867932 422994501
3573858933523744 362779176725767538 466503134
355006270273722975 606167...

output:

3939553

result:

ok 1 number(s): "3939553"

Test #25:

score: 18
Accepted
time: 54ms
memory: 21964kb

input:

719221297460377128 2 47571
344669347369453785 109414971
630436210393683647 527587080
494442208767214644 568762326175380228 274970054
57477492106404787 655245493834324395 382109587
22155928017304041 59482593547715744 873161380
187440545343246007 190303544007160534 159038457
506940482480256741 6413591...

output:

70514973

result:

ok 1 number(s): "70514973"

Test #26:

score: 18
Accepted
time: 59ms
memory: 20612kb

input:

895088201401004405 2 45041
276028463639596405 456551182
805436189268999970 73771
21429629043534406 631368195310636941 265763227
662737085246639506 143087521945488388 635548439
377675072184922400 804129509385729008 716798383
350029179084366085 117553290957648227 20894738
122339684090997249 7205501057...

output:

559035760

result:

ok 1 number(s): "559035760"

Test #27:

score: 18
Accepted
time: 68ms
memory: 18316kb

input:

853901589698398947 2 47600
504553695105130092 847799116
138986940711272376 645918409
805868840752605206 78417023376575599 841040724
729516722093143233 218204564225574757 336393903
730920155682863361 695576676583032360 406662382
387801338291686723 202931704070108854 337663750
247673343610665743 24573...

output:

20383713

result:

ok 1 number(s): "20383713"

Test #28:

score: 18
Accepted
time: 50ms
memory: 21332kb

input:

670502957421329993 2 45217
483745611802893710 733999054
668071203574411469 828666336
420971137268931813 366553146611242395 965231439
287424331604163221 506949430264341972 601249827
149442959137057706 557729764807337099 145435283
24271514949210121 655375054865364550 969273095
570625553631888431 32471...

output:

937105664

result:

ok 1 number(s): "937105664"

Test #29:

score: 18
Accepted
time: 60ms
memory: 21932kb

input:

563845195733711553 2 48989
229866420401531786 558292747
545061569237416562 6907852
132266473456293640 75289038464304103 118029834
32731247863057693 356593250668739234 378210865
66114516634328274 92146176364809198 445824305
231042900349456054 325921825145329565 425319020
423843183122176900 5050925061...

output:

651838351

result:

ok 1 number(s): "651838351"

Test #30:

score: 18
Accepted
time: 55ms
memory: 20600kb

input:

804068805652796381 2 45790
713896086745970460 932094415
451836086076043686 180589234
797324209326094324 458554421458651867 300552452
666099368215435761 398615680976044224 517160772
93127604003167259 65073324216076012 364948453
746562120109527370 478791782647716593 625536788
584650813747492507 584407...

output:

91959720

result:

ok 1 number(s): "91959720"

Subtask #5:

score: 12
Accepted

Test #31:

score: 12
Accepted
time: 2ms
memory: 4364kb

input:

755526150476311190 942 0
492334667739348527 1
755523898623296976 1
532486636690994793 1
755526150476030559 1
755526150476249097 1
502164090270592200 1
657422656495814703 1
487200614853438190 1
311037325561173142 1
755526150475651155 1
125287404340238660 1
755524914808674090 1
755526150476177007 1
75...

output:

546044429

result:

ok 1 number(s): "546044429"

Test #32:

score: 12
Accepted
time: 2ms
memory: 4536kb

input:

507397654005748030 973 0
507391491616563534 1
486814015790119176 1
333131389050214032 1
363564475994643564 1
465930313898633808 1
139522156177690314 1
507395579080257474 1
86630001225723132 1
507395634795467574 1
507396923359845774 1
472957579895774142 1
211220548093936200 1
507397483302327114 1
507...

output:

873803086

result:

ok 1 number(s): "873803086"

Test #33:

score: 12
Accepted
time: 2ms
memory: 4348kb

input:

603106685583649335 921 0
550056634223640253 1
603106685583649293 1
603106685583647605 1
603106685583643690 1
603106685583647260 1
603106685583645101 1
603106685583206332 1
603106685583646490 1
579053271797467737 1
603106685567627560 1
392817087439609936 1
603106685583643465 1
603106685583648090 1
60...

output:

249400664

result:

ok 1 number(s): "249400664"

Test #34:

score: 12
Accepted
time: 2ms
memory: 4296kb

input:

548596182165075765 943 0
548596176080168583 1
548596182156180063 1
312480420249896937 1
548596163341594933 1
526283600729694623 1
548596158109050143 1
403131997716059924 1
434962771902913720 1
503166563025971068 1
334309818515550442 1
548596177929282553 1
548596181450546783 1
548596147814225823 1
54...

output:

315888763

result:

ok 1 number(s): "315888763"

Test #35:

score: 12
Accepted
time: 2ms
memory: 4336kb

input:

757339678164545873 914 0
639318686980737134 1
746121423482808728 1
757339678163450618 1
742690258664301578 1
615075436001700347 1
735156649863536078 1
748312116661086428 1
720777012721160772 1
733811525870561678 1
746526366212816378 1
743741354498887825 1
753440640705502328 1
735178291510182878 1
72...

output:

748030011

result:

ok 1 number(s): "748030011"

Test #36:

score: 12
Accepted
time: 2ms
memory: 4244kb

input:

678523609535069397 961 0
678523501457247993 1
678341707003179753 1
678213366219732921 1
596032992350559535 1
595323423910072641 1
178264171486256288 1
678331675351935897 1
353022445409011341 1
653752496830522075 1
662470342111950027 1
587709190707850701 1
678270056924891769 1
677027683908676175 1
67...

output:

562697340

result:

ok 1 number(s): "562697340"

Test #37:

score: 12
Accepted
time: 2ms
memory: 4108kb

input:

657959922343486841 902 0
650132742778059115 1
105135315791795180 1
438709014360864607 1
545602442587344080 1
657551739592023011 1
656791446287459707 1
657959922133303499 1
647469446648658309 1
657959922343384019 1
657959922221719769 1
336017444559583475 1
657959922253125629 1
655097797158940969 1
19...

output:

300994893

result:

ok 1 number(s): "300994893"

Test #38:

score: 12
Accepted
time: 2ms
memory: 4652kb

input:

545476271566415902 948 0
502943849064064720 1
545153141190505744 1
493528954491284005 1
487490221799012640 1
391805643829976272 1
545466964425150144 1
545474613254014704 1
545475659935859328 1
48415031136648176 1
545475230527923072 1
545472466214333424 1
545475176851931040 1
405305381846539616 1
393...

output:

621606394

result:

ok 1 number(s): "621606394"

Test #39:

score: 12
Accepted
time: 2ms
memory: 4108kb

input:

768089367882777564 903 0
768042195730743057 1
624180099065408353 1
677932298998893337 1
761912479820021969 1
373002333986242953 1
681859753068860049 1
768089367882777309 1
580672767835556559 1
768089367882750069 1
51197080622037114 1
737402458661389169 1
768089367882765501 1
707354099585711345 1
768...

output:

319523314

result:

ok 1 number(s): "319523314"

Test #40:

score: 12
Accepted
time: 0ms
memory: 4644kb

input:

803879216581914933 998 0
498552666676978841 1
803189592600095992 1
803577182309491044 1
803875534594601716 1
803827683448699636 1
803767099629307124 1
803775818980883188 1
803799950365214452 1
803816279020876020 1
803806021800931060 1
803585821604611604 1
695090981117645328 1
803690137369875484 1
68...

output:

867132754

result:

ok 1 number(s): "867132754"

Subtask #6:

score: 0
Wrong Answer

Dependency #3:

100%
Accepted

Dependency #5:

100%
Accepted

Test #41:

score: 0
Wrong Answer
time: 2ms
memory: 4232kb

input:

658450692215768892 966 184
215944253331969524 463889684
658450636472429991 583551110
658450692215733673 179443509
658450692215624997 605779678
508574445107762299 859274405
658450681194937638 515630669
63736085272552748 994573345
354907806666837319 932072760
658450692214054043 663256872
6584506911545...

output:

459883862

result:

wrong answer 1st numbers differ - expected: '12943668', found: '459883862'

Subtask #7:

score: 12
Accepted

Dependency #3:

100%
Accepted

Dependency #5:

100%
Accepted

Test #51:

score: 12
Accepted
time: 67ms
memory: 19276kb

input:

571630416836886394 47168 0
96863681397862733 975125142
356044822253140262 598706048
515453346882217082 780566337
310612673285348975 628963074
470413750105710996 521531320
485023891192396182 511014543
294586905153825661 925671185
571630416738335094 158726562
185789055211250703 954614799
3548394816997...

output:

563260749

result:

ok 1 number(s): "563260749"

Test #52:

score: 12
Accepted
time: 63ms
memory: 18716kb

input:

841161310096886484 47782 0
695723253916094448 724478598
540665669817327612 824722094
841159307153505572 358568703
420009767990047350 208597811
841157041808575787 461740092
841153463198963867 569722258
841155889630106597 515332698
835476875635312659 636252803
841161310096575364 268569091
665233067738...

output:

178000363

result:

ok 1 number(s): "178000363"

Test #53:

score: 12
Accepted
time: 65ms
memory: 18036kb

input:

539025190773540771 46142 0
539025114552193483 750084891
539025146939174001 208399611
539025142948200821 59628495
539025167040882541 187485048
297804195276627820 596910027
539025036251289721 292620891
539025176171348121 25151122
419197658222546676 541151443
539025182999530881 170481735
94373350744432...

output:

792619156

result:

ok 1 number(s): "792619156"

Test #54:

score: 12
Accepted
time: 74ms
memory: 26772kb

input:

705921968914365511 47716 0
705921968910682250 37456241
216562629047838980 788958895
705921968888183480 220262214
504364558319371214 712517838
705921968912285852 63040139
559896530157610827 865295481
692795819065070003 265936336
705921968902391426 525007326
705921968898107858 563844710
45377210899051...

output:

441700676

result:

ok 1 number(s): "441700676"

Test #55:

score: 12
Accepted
time: 89ms
memory: 22864kb

input:

564133086769866350 48875 0
563437196556182544 261486038
560294783129522064 324772044
556631029930923984 145670740
559700141975322384 85009595
314575623929155476 914739751
557994542117070864 119723133
563970481727376144 4644345
556297791301355844 658135589
473151054735727950 815276832
549167714478150...

output:

310639483

result:

ok 1 number(s): "310639483"

Test #56:

score: 12
Accepted
time: 80ms
memory: 26148kb

input:

936756643107884507 47057 0
936756549937799391 463453118
936756642116110143 96749536
936756552075454317 459354765
936756643099480707 8057801
936756597512789337 306600323
936756596879434857 309660796
465274780883248915 884923508
936756624706549095 179625651
936756643107883335 82112034
8680557778246200...

output:

628129359

result:

ok 1 number(s): "628129359"

Test #57:

score: 12
Accepted
time: 77ms
memory: 23140kb

input:

702873086596726417 46921 0
702873084504467311 435498634
299151456816761100 696668178
702873086593780755 188996895
702873085139720895 378933418
287632236113773418 945140906
702873086596626031 8514228
381034645003012276 917283692
702873085223824163 371177051
480867097500933640 624812518
70287308659425...

output:

296470561

result:

ok 1 number(s): "296470561"

Test #58:

score: 12
Accepted
time: 70ms
memory: 22708kb

input:

696868150883245690 48306 0
476810224399322700 854659018
464195603276193600 304310171
446344869551578397 871173576
73772786710123200 427101535
499665574666792800 284452466
346762905048896444 928674821
283641472225843200 145545531
684797240141935200 12699482
263903781116001600 148139221
42026490439052...

output:

178187268

result:

ok 1 number(s): "178187268"

Test #59:

score: 12
Accepted
time: 73ms
memory: 20556kb

input:

995646392343469795 49194 0
995646392329767108 312459955
995646392334135924 245193472
995646392331093996 299744392
995646392321756100 363274045
968605994456210365 485812394
499093046036246318 925126426
995646392341599912 108726352
995646392333878812 250022020
728936689913383683 819169473
714935731010...

output:

664181186

result:

ok 1 number(s): "664181186"

Test #60:

score: 12
Accepted
time: 88ms
memory: 23260kb

input:

802473733444905042 48027 0
415952639582201792 589867404
802473733444442582 39725642
446316590121917984 571300735
22582790395893058 993586735
365938749924876688 605026635
802473733429621382 259044778
14458547092095008 673264904
430697237683964416 901111452
437186563439513194 897704884
802473733433003...

output:

291107795

result:

ok 1 number(s): "291107795"

Subtask #8:

score: 0
Wrong Answer

Dependency #5:

100%
Accepted

Test #61:

score: 0
Wrong Answer
time: 76ms
memory: 30052kb

input:

716429171502522215 47121 48854
684206275836370608 1
447368400898092275 1
500447584334752997 1
380938825102517800 1
703571667242752149 1
432997187680148804 1
169070786477357537 1
702163195024687605 1
706006848814479885 1
714728181809868081 1
702992487375782988 1
695502249468972696 1
29949334130159091...

output:

358370462

result:

wrong answer 1st numbers differ - expected: '358321674', found: '358370462'

Subtask #9:

score: 0
Skipped

Dependency #1:

0%