QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#141518 | #6659. 외곽 순환 도로 2 | Forested | 5 | 108ms | 46880kb | C++17 | 5.2kb | 2023-08-17 15:48:25 | 2023-08-17 15:48:27 |
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;
}
if (chl[i].empty()) {
rch[i] = chc++;
}
}
PER(i, n) {
if (!chl[i].empty()) {
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[chl[i][j - 1].first]]);
}
}
}
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] + w.back());
}
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: 1ms
memory: 3816kb
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
Accepted
time: 0ms
memory: 3696kb
input:
6 0 581451 0 68556 0 918465 0 661406 0 41816 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
1000000110372
result:
ok single line: '1000000110372'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3700kb
input:
4 0 0 0 0 0 0 0 0 0
output:
0
result:
ok single line: '0'
Test #4:
score: -6
Wrong Answer
time: 1ms
memory: 3772kb
input:
5 0 938777585449 0 576051802364 0 418735407836 0 823692221300 233950071687 338912182863 866023804654 680391493800
output:
1277689768312
result:
wrong answer 1st lines differ - expected: '1333076973323', found: '1277689768312'
Subtask #2:
score: 0
Wrong Answer
Test #28:
score: 8
Accepted
time: 106ms
memory: 46856kb
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: 0
Accepted
time: 108ms
memory: 46880kb
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
Accepted
time: 106ms
memory: 46784kb
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:
1025006589524
result:
ok single line: '1025006589524'
Test #31:
score: 0
Accepted
time: 98ms
memory: 46856kb
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:
1025006589524
result:
ok single line: '1025006589524'
Test #32:
score: -8
Wrong Answer
time: 105ms
memory: 46872kb
input:
99997 0 111160315429 0 355167263283 0 846519401525 0 697515481745 0 653176944193 0 975281743723 0 947695822588 0 443385029699 0 86490619914 0 542182758068 0 140914234365 0 453333219458 0 484226894553 0 930883160414 0 961277575066 0 392480084360 0 638524603170 0 806648354769 0 552428035490 0 99450464...
output:
18302884896025640
result:
wrong answer 1st lines differ - expected: '18302944415585093', found: '18302884896025640'
Subtask #3:
score: 5
Accepted
Test #36:
score: 5
Accepted
time: 1ms
memory: 3820kb
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: 0
Accepted
time: 6ms
memory: 16476kb
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: 0
Accepted
time: 54ms
memory: 29424kb
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: 0
Accepted
time: 28ms
memory: 21768kb
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: 0
Accepted
time: 31ms
memory: 22888kb
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: 0
Accepted
time: 35ms
memory: 22044kb
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: 0
Accepted
time: 29ms
memory: 21684kb
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: 0
Accepted
time: 33ms
memory: 21048kb
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: 0
Accepted
time: 25ms
memory: 29264kb
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: 0
Accepted
time: 78ms
memory: 33920kb
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: 0
Accepted
time: 69ms
memory: 29728kb
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: 0
Accepted
time: 63ms
memory: 29624kb
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: 0
Accepted
time: 68ms
memory: 29824kb
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: 0
Accepted
time: 65ms
memory: 29392kb
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: 0
Accepted
time: 94ms
memory: 30256kb
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: 0
Accepted
time: 102ms
memory: 29900kb
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: 0
Accepted
time: 108ms
memory: 29680kb
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: 0
Accepted
time: 62ms
memory: 29596kb
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: 0
Accepted
time: 61ms
memory: 29620kb
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: 0
Accepted
time: 54ms
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: 0
Accepted
time: 64ms
memory: 29984kb
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: 15ms
memory: 16484kb
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:
1000000598424
result:
wrong answer 1st lines differ - expected: '1000000629830', found: '1000000598424'
Subtask #5:
score: 0
Wrong Answer
Test #77:
score: 0
Wrong Answer
time: 6ms
memory: 16364kb
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:
768100931126
result:
wrong answer 1st lines differ - expected: '939418184213', found: '768100931126'
Subtask #6:
score: 0
Skipped
Dependency #1:
0%