QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#141510#6659. 외곽 순환 도로 2Forested5 112ms47008kbC++175.2kb2023-08-17 15:37:112023-08-17 15:37:14

Judging History

你现在查看的是测评时间为 2023-08-17 15:37:14 的历史记录

  • [2024-08-26 15:51:16]
  • 管理员手动重测本题所有提交记录
  • 测评结果:5
  • 用时:97ms
  • 内存:47084kb
  • [2023-08-17 15:37:14]
  • 评测
  • 测评结果:5
  • 用时:112ms
  • 内存:47008kb
  • [2023-08-17 15:37:11]
  • 提交

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] + 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: 3704kb

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: 1ms
memory: 3720kb

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: 3696kb

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: 0ms
memory: 3784kb

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: 103ms
memory: 46980kb

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: 91ms
memory: 46676kb

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: 101ms
memory: 46816kb

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: 109ms
memory: 47008kb

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: 112ms
memory: 46892kb

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:

21889058032201270

result:

wrong answer 1st lines differ - expected: '18302944415585093', found: '21889058032201270'

Subtask #3:

score: 5
Accepted

Test #36:

score: 5
Accepted
time: 1ms
memory: 3760kb

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: 9ms
memory: 16312kb

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: 68ms
memory: 29364kb

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: 33ms
memory: 21680kb

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: 44ms
memory: 22928kb

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: 44ms
memory: 22000kb

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: 38ms
memory: 21752kb

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: 40ms
memory: 21016kb

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: 21ms
memory: 29388kb

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: 69ms
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: 0
Accepted
time: 71ms
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: 59ms
memory: 29632kb

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: 66ms
memory: 29624kb

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: 57ms
memory: 29452kb

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: 106ms
memory: 30312kb

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: 95ms
memory: 29996kb

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: 102ms
memory: 29604kb

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: 68ms
memory: 29668kb

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: 60ms
memory: 29484kb

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: 61ms
memory: 29500kb

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: 71ms
memory: 29908kb

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: 5ms
memory: 16272kb

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: 13ms
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:

1053412466136

result:

wrong answer 1st lines differ - expected: '939418184213', found: '1053412466136'

Subtask #6:

score: 0
Skipped

Dependency #1:

0%