QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#141505 | #6659. 외곽 순환 도로 2 | Forested | 5 | 97ms | 46920kb | C++17 | 5.2kb | 2023-08-17 15:32:40 | 2024-08-26 15:51:15 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define OVERRIDE4(a, b, c, d, ...) d
#define REP2(i, n) for (i32 i = 0; i < (i32)(n); ++i)
#define REP3(i, l, r) for (i32 i = (i32)(l); i < (i32)(r); ++i)
#define REP(...) OVERRIDE4(__VA_ARGS__, REP3, REP2)(__VA_ARGS__)
#define PER2(i, n) for (i32 i = (i32)(n) - 1; i >= 0; --i)
#define PER3(i, l, r) for (i32 i = (i32)(r) - 1; i >= (i32)(l); --i)
#define PER(...) OVERRIDE4(__VA_ARGS__, PER3, PER2)(__VA_ARGS__)
template <typename T>
bool chmin(T &lhs, const T &rhs) {
if (lhs > rhs) {
lhs = rhs;
return true;
}
return false;
}
template <typename T>
bool chmax(T &lhs, const T &rhs) {
if (lhs < rhs) {
lhs = rhs;
return true;
}
return false;
}
using i32 = int;
using i64 = long long;
template <typename T>
using Vec = vector<T>;
template <typename T>
void trc(const Vec<T> &a) {
cerr << "[";
REP(i, a.size()) {
if (i > 0) {
cerr << ", ";
}
cerr << a[i];
}
cerr << "]\n";
}
constexpr i32 INF = 1001001001;
constexpr i64 INF64 = 3003003003003003003LL;
struct DP {
i32 tw;
array<i64, 3> nosp;
array<array<array<i64, 3>, 3>, 2> sp;
DP() : tw(0), nosp(), sp() {
REP(i, 3) {
nosp[i] = INF64;
}
REP(i, 2) REP(j, 3) REP(k, 3) {
sp[i][j][k] = INF64;
}
}
};
bool is_ok(i64 lw, i64 lst, i64 rst) {
if (lst == 2 || rst == 2) {
return true;
}
if (lw) {
rst ^= 1;
}
return lst == rst;
}
array<i64, 3> merge_not_free(array<i64, 3> l, array<i64, 3> r, i32 lw) {
if (lw) {
swap(r[0], r[1]);
}
array<i64, 3> ret;
ret[0] = min({l[2] + r[0], l[0] + r[2], l[0] + r[0]});
ret[1] = min({l[2] + r[1], l[1] + r[2], l[1] + r[1]});
ret[2] = l[2] + r[2];
return ret;
}
DP merge(const DP &l, const DP &r, i64 w) {
DP ret;
ret.tw = l.tw ^ r.tw;
ret.nosp = merge_not_free(l.nosp, r.nosp, l.tw);
REP(ll, 3) REP(rr, 3) {
chmin(ret.sp[l.tw][ll][rr], l.nosp[ll] + r.nosp[rr] + w);
}
REP(lw, 2) REP(ll, 3) REP(lr, 3) REP(rr, 3) REP(whe, 2) {
i64 cost = l.sp[lw][ll][lr] + r.nosp[rr];
if (whe) {
cost += w;
chmin(ret.sp[r.tw][ll][rr], cost);
} else if (rr == 2) {
chmin(ret.sp[lw ^ r.tw][ll][lr], cost);
} else if (lr == 2) {
chmin(ret.sp[lw ^ r.tw][ll][rr ^ lw], cost);
} else if ((lr ^ lw) == rr) {
chmin(ret.sp[lw ^ r.tw][ll][lr], cost);
}
}
REP(lr, 3) REP(rw, 2) REP(rl, 3) REP(rr, 3) REP(whe, 2) {
i64 cost = l.nosp[lr] + r.sp[rw][rl][rr];
if (whe) {
cost += w;
chmin(ret.sp[r.tw][lr][rr], cost);
} else if (rl == 2) {
chmin(ret.sp[rw][lr][rr], cost);
} else if (lr == 2) {
chmin(ret.sp[rw][rw ^ l.tw][rr], cost);
} else if ((lr ^ l.tw) == rl) {
chmin(ret.sp[rw][lr][rr], cost);
}
}
REP(lw, 2) REP(ll, 3) REP(lr, 3) REP(rw, 2) REP(rl, 3) REP(rr, 3) {
i64 cost = l.sp[lw][ll][lr] + r.sp[rw][rl][rr];
if (!is_ok(lw, lr, rl)) {
cost += w;
}
chmin(ret.sp[rw][ll][rr], cost);
}
return ret;
}
DP trans(const DP &dp, i64 c) {
DP ret = dp;
chmin(ret.nosp[2], ret.nosp[0] + c);
chmin(ret.nosp[2], ret.nosp[1] + c);
REP(w, 2) REP(l, 3) REP(r, 3) {
chmin(ret.sp[w][2][2], ret.sp[w][l][r] + c);
}
return ret;
}
i64 place_police(Vec<i32> p, Vec<i64> c, Vec<i64> w) {
p.insert(p.begin(), 0);
c.insert(c.begin(), 0);
i32 n = (i32)p.size();
Vec<Vec<pair<i32, i64>>> chl(n);
REP(i, 1, n) {
chl[p[i]].emplace_back(i, c[i]);
}
Vec<i32> dep(n, 0);
Vec<i32> rch(n, 0);
i32 chc = 0;
REP(i, n) {
for (auto [ch, _] : chl[i]) {
dep[ch] = dep[i] + 1;
}
}
PER(i, n) {
if (chl[i].empty()) {
rch[i] = ++chc;
} else {
rch[i] = rch[chl[i].back().first];
}
}
Vec<DP> dp(n);
PER(i, n) {
if (chl[i].empty()) {
dp[i].tw = 1;
dp[i].nosp[dep[i] % 2] = 0;
} else {
Vec<DP> lst;
lst.reserve(chl[i].size());
for (auto [ch, cost] : chl[i]) {
lst.push_back(trans(dp[ch], cost));
}
dp[i] = lst.front();
REP(j, 1, lst.size()) {
dp[i] = merge(dp[i], lst[j], w[rch[i]]);
}
}
}
i64 ans = INF64;
if (w.size() % 2 == 0) {
chmin(ans, dp[0].nosp[0]);
chmin(ans, dp[0].nosp[1]);
chmin(ans, dp[0].nosp[2]);
} else {
chmin(ans, dp[0].nosp[0] + w.back());
chmin(ans, dp[0].nosp[1] + w.back());
chmin(ans, dp[0].nosp[2]);
}
REP(wi, 2) REP(l, 3) REP(r, 3) {
if (is_ok(wi, r, l)) {
chmin(ans, dp[0].sp[wi][l][r]);
} else {
chmin(ans, dp[0].sp[wi][l][r] + w.back());
}
}
return ans;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 6
Accepted
time: 0ms
memory: 4060kb
input:
5 0 452912 0 820899 0 79369 0 232463 1000000000000 1000000000000 1000000000000 1000000000000
output:
532281
result:
ok single line: '532281'
Test #2:
score: 0
Wrong Answer
time: 0ms
memory: 3796kb
input:
6 0 581451 0 68556 0 918465 0 661406 0 41816 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
2271694
result:
wrong answer 1st lines differ - expected: '1000000110372', found: '2271694'
Subtask #2:
score: 0
Wrong Answer
Test #28:
score: 8
Accepted
time: 94ms
memory: 46920kb
input:
99997 0 122727 0 267270 0 846212 0 454122 0 805668 0 614161 0 7805 0 173284 0 684707 0 269129 0 930945 0 1101 0 992427 0 297412 0 759787 0 227130 0 120418 0 90914 0 333684 0 46144 0 519912 0 171490 0 823586 0 121787 0 674177 0 560254 0 753090 0 853359 0 465464 0 655527 0 631303 0 919012 0 597126 0 1...
output:
24980330181
result:
ok single line: '24980330181'
Test #29:
score: 8
Accepted
time: 84ms
memory: 46848kb
input:
99997 0 122727 0 267270 0 846212 0 454122 0 805668 0 614161 0 7805 0 173284 0 684707 0 269129 0 930945 0 1101 0 992427 0 297412 0 759787 0 227130 0 120418 0 90914 0 333684 0 46144 0 519912 0 171490 0 823586 0 121787 0 674177 0 560254 0 753090 0 853359 0 465464 0 655527 0 631303 0 919012 0 597126 0 1...
output:
24980330181
result:
ok single line: '24980330181'
Test #30:
score: 0
Wrong Answer
time: 92ms
memory: 46884kb
input:
99998 0 792854 0 622829 0 836127 0 847372 0 71732 0 241096 0 487224 0 696890 0 899047 0 845614 0 27226 0 270985 0 698890 0 64699 0 856738 0 685434 0 766150 0 540443 0 802763 0 874879 0 250532 0 834015 0 616087 0 771638 0 262098 0 458015 0 959723 0 408130 0 880649 0 456673 0 923653 0 969100 0 439032 ...
output:
50122415149
result:
wrong answer 1st lines differ - expected: '1025006589524', found: '50122415149'
Subtask #3:
score: 5
Accepted
Test #36:
score: 5
Accepted
time: 0ms
memory: 3732kb
input:
11 0 9 0 8 2 0 3 7 3 1 2 6 0 0 7 7 7 1 9 6 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
1
result:
ok single line: '1'
Test #37:
score: 5
Accepted
time: 13ms
memory: 16368kb
input:
50311 0 630582 1 458618 2 300543 3 566041 4 306718 5 134260 6 736322 7 458543 8 609374 9 355623 10 706939 11 48588 12 455725 13 105118 14 71071 15 528699 16 423538 17 471781 18 98063 19 169099 20 657181 21 295537 22 49937 23 306612 24 186582 25 505763 26 831500 27 406268 28 294626 29 128111 30 42115...
output:
813491
result:
ok single line: '813491'
Test #38:
score: 5
Accepted
time: 54ms
memory: 29408kb
input:
99992 0 630582 0 458618 2 300543 2 566041 4 306718 4 134260 6 736322 6 458543 8 609374 8 355623 10 706939 10 48588 12 455725 12 105118 14 71071 14 528699 16 423538 16 471781 18 98063 18 169099 20 657181 20 295537 22 49937 22 306612 24 186582 24 505763 26 831500 26 406268 28 294626 28 128111 30 42115...
output:
0
result:
ok single line: '0'
Test #39:
score: 5
Accepted
time: 32ms
memory: 21652kb
input:
70338 0 630582 0 458618 2 300543 3 566041 4 306718 5 134260 5 736322 7 458543 8 609374 8 355623 10 706939 7 48588 12 455725 13 105118 14 71071 15 528699 16 423538 15 471781 18 98063 14 169099 20 657181 21 295537 22 49937 23 306612 21 186582 25 505763 26 831500 27 406268 27 294626 29 128111 30 421150...
output:
1645133792
result:
ok single line: '1645133792'
Test #40:
score: 5
Accepted
time: 38ms
memory: 22708kb
input:
75063 0 630582 1 458618 2 300543 3 566041 4 306718 5 134260 6 736322 7 458543 7 609374 9 355623 5 706939 11 48588 4 455725 13 105118 13 71071 15 528699 16 423538 17 471781 17 98063 19 169099 20 657181 21 295537 20 49937 23 306612 23 186582 25 505763 19 831500 27 406268 28 294626 28 128111 30 421150 ...
output:
2120124996
result:
ok single line: '2120124996'
Test #41:
score: 5
Accepted
time: 34ms
memory: 22276kb
input:
71756 0 630582 1 458618 0 300543 3 566041 4 306718 4 134260 6 736322 7 458543 8 609374 9 355623 10 706939 11 48588 12 455725 13 105118 14 71071 15 528699 16 423538 17 471781 18 98063 16 169099 20 657181 12 295537 22 49937 23 306612 24 186582 25 505763 26 831500 26 406268 28 294626 23 128111 30 42115...
output:
1787349034
result:
ok single line: '1787349034'
Test #42:
score: 5
Accepted
time: 30ms
memory: 21696kb
input:
70448 0 630582 1 458618 2 300543 3 566041 4 306718 5 134260 6 736322 7 458543 7 609374 9 355623 10 706939 11 48588 12 455725 13 105118 12 71071 15 528699 16 423538 17 471781 17 98063 19 169099 19 657181 21 295537 22 49937 23 306612 24 186582 16 505763 26 831500 27 406268 27 294626 29 128111 30 42115...
output:
1645924769
result:
ok single line: '1645924769'
Test #43:
score: 5
Accepted
time: 27ms
memory: 21252kb
input:
68356 0 630582 1 458618 2 300543 3 566041 4 306718 5 134260 6 736322 7 458543 8 609374 9 355623 10 706939 11 48588 12 455725 13 105118 14 71071 15 528699 16 423538 17 471781 18 98063 19 169099 20 657181 21 295537 22 49937 23 306612 24 186582 25 505763 26 831500 27 406268 28 294626 29 128111 30 42115...
output:
1434056469
result:
ok single line: '1434056469'
Test #44:
score: 5
Accepted
time: 16ms
memory: 29212kb
input:
99998 0 989885 1 623358 2 323898 3 418387 4 847431 5 998077 6 737652 7 214051 8 72927 9 817696 10 494815 11 349489 12 264272 13 60664 14 739563 15 744355 16 882267 17 957314 18 547277 19 714547 20 566081 21 593766 22 431363 23 249609 24 768570 25 985859 26 183057 27 840222 28 168478 29 16211 30 3082...
output:
2654008
result:
ok single line: '2654008'
Test #45:
score: 5
Accepted
time: 63ms
memory: 33948kb
input:
99997 0 955101 1 576100 2 127659 3 811226 4 41161 4 566231 6 943952 7 287921 8 995827 9 53909 10 446266 11 568843 12 813723 12 241044 12 619032 15 744341 15 255358 15 8997 18 425939 18 28355 20 747884 21 827659 21 772961 23 229078 24 638934 24 618689 24 795722 27 518058 28 691526 29 667781 30 259093...
output:
10977059663
result:
ok single line: '10977059663'
Test #46:
score: 5
Accepted
time: 58ms
memory: 29576kb
input:
99998 0 349154 0 960228 2 693946 3 247696 3 58262 5 799702 5 731306 7 501447 8 296672 8 812371 10 173737 10 91929 12 524275 12 13376 14 316834 14 77773 16 888284 17 491488 18 963488 19 57028 20 526164 21 289556 22 136189 22 471245 24 474182 24 398669 26 46490 27 40395 28 529585 29 627410 30 271602 3...
output:
4656503217
result:
ok single line: '4656503217'
Test #47:
score: 5
Accepted
time: 55ms
memory: 29568kb
input:
99998 0 989885 1 623358 0 323898 3 418387 4 847431 4 998077 6 737652 7 214051 8 72927 8 817696 10 494815 11 349489 11 264272 13 60664 13 739563 15 744355 16 882267 11 957314 18 547277 19 714547 20 566081 21 593766 21 431363 23 249609 24 768570 25 985859 26 183057 27 840222 28 168478 28 16211 26 3082...
output:
5211108945
result:
ok single line: '5211108945'
Test #48:
score: 5
Accepted
time: 64ms
memory: 29668kb
input:
99998 0 989885 1 623358 2 323898 1 418387 4 847431 4 998077 4 737652 1 214051 8 72927 9 817696 10 494815 11 349489 10 264272 10 60664 8 739563 8 744355 16 882267 17 957314 18 547277 19 714547 20 566081 20 593766 20 431363 18 249609 24 768570 25 985859 26 183057 25 840222 28 168478 28 16211 30 30820 ...
output:
7300156968
result:
ok single line: '7300156968'
Test #49:
score: 5
Accepted
time: 62ms
memory: 29552kb
input:
99999 0 960228 1 693946 1 247696 3 58262 3 799702 5 731306 5 501447 3 296672 8 812371 9 173737 10 91929 11 524275 12 13376 12 316834 11 77773 15 888284 15 491488 10 963488 18 57028 19 526164 19 289556 18 136189 22 471245 22 474182 9 398669 25 46490 26 40395 27 529585 28 627410 29 271602 30 109358 31...
output:
10004154233
result:
ok single line: '10004154233'
Test #50:
score: 5
Accepted
time: 82ms
memory: 30300kb
input:
99998 0 349154 1 960228 1 693946 1 247696 4 58262 5 799702 5 731306 5 501447 5 296672 5 812371 5 173737 5 91929 5 524275 5 13376 5 316834 4 77773 16 888284 16 491488 16 963488 16 57028 16 526164 16 289556 16 136189 16 471245 16 474182 16 398669 4 46490 27 40395 27 529585 27 627410 27 271602 27 10935...
output:
20125634322
result:
ok single line: '20125634322'
Test #51:
score: 5
Accepted
time: 97ms
memory: 30100kb
input:
99998 0 349154 1 960228 1 693946 1 247696 1 58262 1 799702 1 731306 1 501447 1 296672 1 812371 1 173737 11 91929 12 524275 12 13376 12 316834 12 77773 12 888284 12 491488 12 963488 12 57028 12 526164 12 289556 12 136189 12 471245 12 474182 12 398669 12 46490 12 40395 12 529585 12 627410 12 271602 12...
output:
23556910464
result:
ok single line: '23556910464'
Test #52:
score: 5
Accepted
time: 89ms
memory: 29656kb
input:
99998 0 349154 1 960228 1 693946 1 247696 1 58262 1 799702 1 731306 1 501447 1 296672 1 812371 1 173737 1 91929 1 524275 1 13376 1 316834 1 77773 1 888284 1 491488 1 963488 1 57028 1 526164 1 289556 22 136189 1 471245 1 474182 1 398669 1 46490 1 40395 1 529585 1 627410 1 271602 1 109358 1 83447 1 19...
output:
24381300470
result:
ok single line: '24381300470'
Test #53:
score: 5
Accepted
time: 53ms
memory: 29584kb
input:
99998 0 349154 1 960228 2 693946 3 247696 4 58262 5 799702 6 731306 6 501447 8 296672 9 812371 10 173737 11 91929 10 524275 13 13376 13 316834 15 77773 16 888284 17 491488 15 963488 19 57028 15 526164 9 289556 9 136189 9 471245 5 474182 25 398669 26 46490 27 40395 28 529585 29 627410 29 271602 31 10...
output:
5869311889
result:
ok single line: '5869311889'
Test #54:
score: 5
Accepted
time: 59ms
memory: 29600kb
input:
99999 0 960228 1 693946 2 247696 3 58262 4 799702 5 731306 6 501447 7 296672 8 812371 9 173737 9 91929 9 524275 12 13376 12 316834 14 77773 15 888284 15 491488 17 963488 18 57028 19 526164 20 289556 21 136189 22 471245 23 474182 24 398669 25 46490 23 40395 27 529585 28 627410 29 271602 29 109358 23 ...
output:
5391164384
result:
ok single line: '5391164384'
Test #55:
score: 5
Accepted
time: 57ms
memory: 29444kb
input:
99999 0 960228 1 693946 2 247696 3 58262 4 799702 5 731306 6 501447 7 296672 8 812371 9 173737 10 91929 11 524275 12 13376 13 316834 14 77773 15 888284 16 491488 17 963488 18 57028 19 526164 20 289556 21 136189 22 471245 23 474182 24 398669 25 46490 26 40395 27 529585 28 627410 29 271602 30 109358 3...
output:
4579960285
result:
ok single line: '4579960285'
Test #56:
score: 5
Accepted
time: 59ms
memory: 30016kb
input:
99997 0 955101 1 576100 1 127659 3 811226 4 41161 5 566231 6 943952 7 287921 8 995827 9 53909 9 446266 9 568843 12 813723 12 241044 14 619032 15 744341 16 255358 17 8997 18 425939 19 28355 20 747884 20 827659 22 772961 22 229078 24 638934 25 618689 25 795722 27 518058 28 691526 29 667781 29 259093 2...
output:
7479580481
result:
ok single line: '7479580481'
Subtask #4:
score: 0
Wrong Answer
Dependency #3:
100%
Accepted
Test #57:
score: 0
Wrong Answer
time: 9ms
memory: 16548kb
input:
50313 0 671723 1 730984 2 799869 3 708040 4 711347 5 913917 6 751372 7 466548 8 886178 9 550034 10 657744 11 417284 12 757271 13 462274 14 539467 15 622147 16 989468 17 588888 18 834040 19 6615 20 192481 21 495240 22 784027 23 951846 24 129510 25 204593 26 599793 27 171885 28 475383 29 206677 30 889...
output:
1375245
result:
wrong answer 1st lines differ - expected: '1000000629830', found: '1375245'
Subtask #5:
score: 0
Wrong Answer
Test #77:
score: 0
Wrong Answer
time: 10ms
memory: 16348kb
input:
50311 0 962897543825 1 887020369743 2 363658802934 3 481009844166 4 1099712574 5 858320882162 6 521927434762 7 379344260539 8 73024776148 9 634183458545 10 869560347910 11 81581323331 12 750044298516 13 307013017409 14 306226274039 15 423923546601 16 482114694167 17 849292461119 18 299993045938 19 7...
output:
1053412466136
result:
wrong answer 1st lines differ - expected: '939418184213', found: '1053412466136'
Subtask #6:
score: 0
Skipped
Dependency #1:
0%