QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#766436 | #4898. 基础图论练习题 | hhoppitree | 48 | 103ms | 30052kb | C++17 | 4.2kb | 2024-11-20 17:19:31 | 2024-11-20 17:19:33 |
Judging History
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%