QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#585048#140. Palembang Bridges isirazeev8 2ms3896kbC++202.0kb2024-09-23 18:35:422024-09-23 18:35:43

Judging History

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

  • [2024-09-23 18:35:43]
  • 评测
  • 测评结果:8
  • 用时:2ms
  • 内存:3896kb
  • [2024-09-23 18:35:42]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
#define int long long

vector<int> s, t;

int check(int x) {
    int res = 0;
    for (int i = 0; i < (int) s.size(); i++) {
        if (x < t[i]) res += s[i] + t[i] - 2 * x + 1;
        else if (x > s[i]) res += 2 * x - s[i] - t[i] + 1;
        else res += s[i] - t[i] + 1;
    }
    return res;
}

int add = 0;

int solve_for_one() {
    int res = (int) 1e18, n = (int) s.size();
    if (n == 0) return add;
    vector<int> all;
    for (int i = 0; i < n; i++) all.emplace_back(s[i]), all.emplace_back(t[i]);
    sort(all.begin(), all.end());
    for(int x : all) res = min(res, check(x));
//    if (check(all[n]) < res) res = check(all[n]);
//    if (check(all[n - 1]) < res) res = check(all[n - 1]);
    return res + add;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int k, n, res = (int) 1e18;
    cin >> k >> n;
    for (int i = 0; i < n; i++) {
        int S, T;
        char P, Q;
        cin >> P >> S >> Q >> T;
        if (S < T) swap(S, T);
        if (P == Q) add += S - T;
        else s.emplace_back(S), t.emplace_back(T);
    }
    n = (int) s.size();
    if (n == 0) {
        cout << add;
        return 0;
    }
    if (k == 1) {
        cout << solve_for_one();
        return 0;
    }
    set<int> points;
    for (int i = 0; i < n; i++) points.insert(s[i]), points.insert(t[i]);
    for (int x: points) {
        vector<int> ss = s, tt = t;
        s.clear(), t.clear();
        int cur_res = 0;
        for (int i = 0; i < (int) ss.size(); i++) {
            if (tt[i] > x) s.emplace_back(ss[i]), t.emplace_back(tt[i]);
            else {
                if (x < tt[i]) cur_res += ss[i] + tt[i] - 2 * x + 1;
                else if (x > ss[i]) cur_res += 2 * x - ss[i] - tt[i] + 1;
                else cur_res += ss[i] - tt[i] + 1;
            }
        }
        cur_res += solve_for_one();
        s = ss, t = tt;
        res = min(res, cur_res);
    }
    cout << res;
    return 0;
}

详细

Subtask #1:

score: 8
Accepted

Test #1:

score: 8
Accepted
time: 0ms
memory: 3612kb

input:

1 1
B 426311872 B 741424667

output:

315112795

result:

ok single line: '315112795'

Test #2:

score: 8
Accepted
time: 2ms
memory: 3708kb

input:

1 1000
A 1000000000 B 1000000000
B 1000000000 A 1000000000
A 500000000 B 500000000
A 1000000000 B 1000000000
B 0 A 0
A 500000000 B 500000000
B 0 A 0
A 1000000000 B 1000000000
A 500000000 B 500000000
A 1000000000 B 1000000000
B 1000000000 A 1000000000
A 0 B 0
B 0 A 0
B 0 A 0
A 500000000 B 500000000
B...

output:

659000001000

result:

ok single line: '659000001000'

Test #3:

score: 8
Accepted
time: 2ms
memory: 3608kb

input:

1 1000
A 500000001 B 500000000
A 500000002 B 500000003
A 500000005 B 500000004
A 1 B 0
B 500000007 A 500000006
A 500000009 B 500000008
B 500000010 A 500000011
B 1000000000 A 999999999
A 3 B 2
B 499999988 A 499999989
A 999999998 B 999999997
B 4 A 5
B 7 A 6
A 9 B 8
A 10 B 11
B 999999996 A 999999995
A ...

output:

649999819818

result:

ok single line: '649999819818'

Test #4:

score: 8
Accepted
time: 0ms
memory: 3584kb

input:

1 4
B 90 B 72
A 68 A 90
A 15 A 42
A 45 A 15

output:

97

result:

ok single line: '97'

Test #5:

score: 8
Accepted
time: 0ms
memory: 3828kb

input:

1 1000
A 0 B 1
A 1 B 0
A 0 B 1
B 0 A 0
B 1 B 1
B 0 A 0
A 1 B 1
A 1 B 1
A 1 B 0
A 0 B 1
A 0 B 0
B 1 A 1
B 0 A 0
B 0 A 0
A 1 B 0
A 1 B 0
B 1 A 0
B 0 A 0
A 1 B 1
A 1 B 1
B 0 A 1
B 0 A 1
A 0 B 1
B 0 A 1
A 1 B 0
A 1 B 1
B 1 A 0
B 1 A 0
B 1 A 0
A 1 B 0
A 0 B 1
A 0 B 1
A 0 B 0
B 0 A 0
A 1 B 1
B 0 A 1
B 0 A...

output:

1969

result:

ok single line: '1969'

Test #6:

score: 8
Accepted
time: 0ms
memory: 3824kb

input:

1 1000
A 598246 B 85766
B 457924 A 841963
B 107690 A 39924
B 814042 A 328853
B 518897 A 548739
B 633776 A 181927
A 985484 B 773931
A 698975 B 526021
A 846547 B 258759
B 778661 A 181322
B 131489 A 151052
A 669218 B 314136
B 562707 A 887236
B 47953 A 880429
A 251615 B 488724
B 734021 A 487209
B 492935...

output:

497401257

result:

ok single line: '497401257'

Test #7:

score: 8
Accepted
time: 2ms
memory: 3600kb

input:

1 967
B 209071192 A 810324333
A 603292190 B 990286906
B 76624835 A 1764783
B 38843365 A 66481975
B 506328820 A 854781128
B 601820095 A 20961640
B 953337305 A 762377474
B 472547211 A 248665021
A 908090176 B 277738137
B 523090586 A 193277212
B 824206700 A 342446509
B 845969410 A 191939894
A 472429676 ...

output:

470796680092

result:

ok single line: '470796680092'

Test #8:

score: 8
Accepted
time: 2ms
memory: 3896kb

input:

1 1000
B 0 A 1000000000
B 0 A 1000000000
B 1000000000 A 0
A 1000000000 B 0
B 0 A 1000000000
B 0 A 1000000000
A 0 B 1000000000
B 0 A 1000000000
B 0 A 1000000000
B 0 A 1000000000
B 0 A 1000000000
A 1000000000 B 0
B 0 A 1000000000
B 0 A 1000000000
A 1000000000 B 0
B 1000000000 A 0
B 1000000000 A 0
B 0 ...

output:

1000000001000

result:

ok single line: '1000000001000'

Test #9:

score: 8
Accepted
time: 2ms
memory: 3552kb

input:

1 1000
A 126148 B 138629
A 1956796 B 1961512
A 2467612 B 2976963
B 3231056 A 3187470
B 4485092 A 4805418
A 5815768 B 5012466
B 6709826 A 6631652
A 7384525 B 7982443
A 8702501 B 8083053
A 9750494 B 9414146
B 10511913 A 10300242
A 11414967 B 11792128
B 12453829 A 12271791
A 13801488 B 13139841
B 14570...

output:

499992449655

result:

ok single line: '499992449655'

Test #10:

score: 8
Accepted
time: 0ms
memory: 3704kb

input:

1 1000
B 1000000000 A 0
B 1 A 999999999
A 999999998 B 2
A 999999997 B 3
A 999999996 B 4
B 5 A 999999995
B 6 A 999999994
A 7 B 999999993
B 999999992 A 8
A 9 B 999999991
A 999999990 B 10
A 11 B 999999989
B 12 A 999999988
A 13 B 999999987
B 14 A 999999986
A 999999985 B 15
B 999999984 A 16
B 17 A 999999...

output:

999999002000

result:

ok single line: '999999002000'

Test #11:

score: 8
Accepted
time: 2ms
memory: 3896kb

input:

1 1000
A 639022834 B 639022825
B 164875881 A 164875889
A 345973409 B 345973410
B 650643813 A 650643816
A 218804569 B 218804573
B 60886574 A 60886583
B 829040885 A 829040890
B 340211580 A 340211573
B 783059185 A 783059177
B 994262398 A 994262399
B 427304481 A 427304486
A 373191501 B 373191501
A 65190...

output:

498415265474

result:

ok single line: '498415265474'

Subtask #2:

score: 0
Time Limit Exceeded

Dependency #1:

100%
Accepted

Test #12:

score: 0
Time Limit Exceeded

input:

1 100000
B 0 A 0
A 1 B 0
B 0 A 0
A 1 B 0
B 1 A 0
B 1 A 1
B 1 A 0
A 0 B 0
B 1 A 0
B 1 A 0
B 1 A 0
B 0 A 1
B 0 A 0
B 0 A 1
A 0 B 1
B 1 A 0
A 1 B 1
B 0 A 0
A 0 B 0
A 1 B 1
B 1 A 0
B 0 A 1
A 0 B 0
A 0 B 1
B 1 A 0
A 0 B 1
A 0 B 0
A 1 B 0
A 1 B 1
A 1 B 0
B 1 A 0
A 1 B 0
A 0 B 0
B 0 A 1
B 1 A 0
A 0 B 1
A 0...

output:


result:


Subtask #3:

score: 0
Wrong Answer

Test #22:

score: 9
Accepted
time: 0ms
memory: 3544kb

input:

2 1
B 822190955 B 309099167

output:

513091788

result:

ok single line: '513091788'

Test #23:

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

input:

2 100
A 699479271 B 699479270
B 999432953 A 999432956
A 657124443 B 657124444
B 928721383 A 928721383
B 809218485 A 809218487
B 220719335 A 220719338
B 93242937 A 93242943
A 566737518 B 566737523
A 751211620 B 751211614
B 799605314 A 799605321
A 634052514 B 634052513
B 681923789 A 681923799
B 377862...

output:

29671347533

result:

wrong answer 1st lines differ - expected: '22963819679', found: '29671347533'

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%