QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#198102#3514. BoulderingbeshoyhanyAC ✓2122ms39492kbC++204.2kb2023-10-03 02:38:462023-10-03 02:38:46

Judging History

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

  • [2023-10-03 02:38:46]
  • 评测
  • 测评结果:AC
  • 用时:2122ms
  • 内存:39492kb
  • [2023-10-03 02:38:46]
  • 提交

answer

#include<bits/stdc++.h>

#define ll long long
#define pp push_back
#define endl '\n'
#define all(x) x.begin(),x.end()
#define ld long double
#define PI acos(-1)
#define sin(a) sin((a)*PI/180)
#define cos(a) cos((a)*PI/180)
#define ones(x) __builtin_popcountll(x)
//#define int ll

using namespace std;

void Drakon() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
#ifdef Clion
    freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
#endif
}

unsigned long long inf = 1e10;
const double EPS = 1e-6;
const int MOD = 1000000007, N = 30, LOG = 25;

ll gcd(ll x, ll y) {
    return y ? gcd(y, x % y) : x;
}

ll lcm(ll a, ll b) {
    return (a * b) / __gcd(a, b);
}

ll mul(const ll &a, const ll &b) {
    return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
}

ll add(const ll &a, const ll &b) {
    return (a + b + 2 * MOD) % MOD;
}

ll pw(ll x, ll y) {
    ll ret = 1;
    while (y > 0) {
        if (y % 2 == 0) {
            x = mul(x, x);
            y = y / 2;
        } else {
            ret = mul(ret, x);
            y = y - 1;
        }
    }
    return ret;
}

int h, w, r, s;
char arr[N][N];
pair<int, int>top, bot;
vector<pair<pair<int, int>, double>>adj[N][N];

void dijkstra(){
    double dist[h][w][h * w * 10];
    bool vis[h][w][h * w * 10];
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            for (int k = 0; k < h * w * 10; ++k) {
                dist[i][j][k] = 1e9;
                vis[i][j][k] = false;
            }
        }
    }

    dist[bot.first][bot.second][min(s, h * w * 10 - 1)] = 0;
    priority_queue<pair<pair<double, int>, pair<int, int>>, vector<pair<pair<double, int>, pair<int, int>>>, greater<>>q;
    q.push({{0, min(s - (arr[bot.first][bot.second] - '0'), h * w * 10 - 1)}, bot});
    while (!q.empty()){
        auto p = q.top();
        q.pop();
        int x = p.second.first, y = p.second.second, sta = p.first.second;
        double d = p.first.first;
        if(vis[x][y][sta])continue;
        vis[x][y][sta] = true;
        for(auto v : adj[x][y]){
            if(sta >= arr[v.first.first][v.first.second] - '0'){
                if(dist[v.first.first][v.first.second][sta - (arr[v.first.first][v.first.second] - '0')] - (d + v.second) > EPS){
                    dist[v.first.first][v.first.second][sta - (arr[v.first.first][v.first.second] - '0')] = d + v.second;
                    q.push({{d + v.second, sta - (arr[v.first.first][v.first.second] - '0')}, v.first});
                }
            }
        }
    }

    double ans = 1e9;
    for (int i = 0; i <= min(s, h * w * 10 - 1); ++i) {
        ans = min(ans, dist[top.first][top.second][i]);
    }
    if(ans > 1e8){
        cout << "impossible";
        return;
    }
    cout << fixed << setprecision(10) << ans;
}

void solve() {
    cin >> h >> w >> r >> s;
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            cin >> arr[i][j];
        }
    }

    bool found = false;
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            if(arr[i][j] != '.'){
                top = {i, j};
                found = true;
                break;
            }
        }
        if(found)break;
    }

    found = false;
    for (int i = h - 1; i >= 0; --i) {
        for (int j = 0; j < w; ++j) {
            if(arr[i][j] != '.'){
                bot = {i, j};
                found = true;
                break;
            }
        }
        if(found)break;
    }

    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            if(arr[i][j] == '.')continue;
            for (int k = 0; k < h; ++k) {
                for (int l = 0; l < w; ++l) {
                    if(k == i && l == j)continue;
                    if(arr[k][l] == '.')continue;;
                    int d = (i - k) * (i - k) + (j - l) * (j - l);
                    if(d <= r * r){
                        adj[i][j].pp({{k, l}, sqrt(d)});
                    }
                }
            }
        }
    }

    dijkstra();
}

signed main() {
    Drakon();
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5356kb

input:

12 11 3 11
...........
........3..
.......3.1.
...........
.......2...
.....2.....
.1.1.......
.....2.....
.1.........
...2.......
.1.........
...........

output:

13.5432037669

result:

ok 

Test #2:

score: 0
Accepted
time: 0ms
memory: 5148kb

input:

8 16 3 15
......1.........
....1..1.1......
..2........1....
...2......1.....
.....4.1..2..1..
................
.......1........
................

output:

6.4142135624

result:

ok 

Test #3:

score: 0
Accepted
time: 1ms
memory: 4340kb

input:

10 10 2 10
...2......
..........
...5.2....
..........
.....3....
....5.....
..2....2..
..1.......
....2.....
..1.......

output:

impossible

result:

ok 

Test #4:

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

input:

5 5 1 100
....1
.1111
.1.9.
.119.
..1..

output:

6.0000000000

result:

ok 

Test #5:

score: 0
Accepted
time: 0ms
memory: 3860kb

input:

6 7 3 10
..6....
..1....
.......
.5..1..
.......
..1....

output:

6.6568542495

result:

ok 

Test #6:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

2 18 2 5
.............1....
...............9..

output:

impossible

result:

ok 

Test #7:

score: 0
Accepted
time: 266ms
memory: 38132kb

input:

25 25 1 1000000
9........................
21.21921.21921.21921.2193
92.92.92.92.92.92.92.92.3
.2..2..2..2..2..2..2..2.3
12.12.12.12.12.12.12.12.3
29.29.29.29.29.29.29.29.3
2..2..2..2..2..2..2..2..3
21.21.21.21.21.21.21.21.3
92.92.92.92.92.92.92.92.3
.2..2..2..2..2..2..2..2.3
12.12.12.12.12.12.12.12....

output:

272.0000000000

result:

ok 

Test #8:

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

input:

2 18 2 5
.............9....
...............1..

output:

impossible

result:

ok 

Test #9:

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

input:

3 3 2 7
..3
...
..4

output:

2.0000000000

result:

ok 

Test #10:

score: 0
Accepted
time: 587ms
memory: 38164kb

input:

25 25 1 1000000000
........................1
2547174745232875997886554
7965651126962942737771266
6728739299224693912515356
3892629154668465958161356
7224952531945412299918567
6652628797132321234345444
2166938247278479435464195
4614671371217599224792557
1652832422769863877435862
528832887161666938898...

output:

48.0000000000

result:

ok 

Test #11:

score: 0
Accepted
time: 2103ms
memory: 39492kb

input:

25 25 3 1000000000
........................1
9726394797162243248412114
2389413121411497892345775
3536731263389491377529168
8539547197629558379487557
3476316664681454144237253
7167793883245166544976269
6551392597242556216495516
2913226341422851312188434
4794887856899463978185497
183788127159254461697...

output:

33.9411254970

result:

ok 

Test #12:

score: 0
Accepted
time: 2122ms
memory: 39428kb

input:

25 25 3 100000
........................1
9726394797162243248412114
2389413121411497892345775
3536731263389491377529168
8539547197629558379487557
3476316664681454144237253
7167793883245166544976269
6551392597242556216495516
2913226341422851312188434
4794887856899463978185497
1837881271592544616972778...

output:

33.9411254970

result:

ok 

Test #13:

score: 0
Accepted
time: 2072ms
memory: 39488kb

input:

25 25 3 1000000000
........................1
2547174745232875997886554
7965651126962942737771266
6728739299224693912515356
3892629154668465958161356
7224952531945412299918567
6652628797132321234345444
2166938247278479435464195
4614671371217599224792557
1652832422769863877435862
528832887161666938898...

output:

33.9411254970

result:

ok 

Test #14:

score: 0
Accepted
time: 207ms
memory: 38052kb

input:

25 25 1 1000000000
........................1
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
111111111111111111111...

output:

48.0000000000

result:

ok 

Test #15:

score: 0
Accepted
time: 1687ms
memory: 38408kb

input:

25 25 3 1000000000
........................1
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
111111111111111111111...

output:

33.9411254970

result:

ok 

Test #16:

score: 0
Accepted
time: 3ms
memory: 4576kb

input:

10 10 1 1000000000
.........1
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1.........

output:

18.0000000000

result:

ok 

Test #17:

score: 0
Accepted
time: 3ms
memory: 15160kb

input:

18 20 3 549
...................9
.9.9.9.9.9.9.9.9.9..
....................
9...................
9.9.9.9.9.9.9.9.9.9.
....................
...................9
.9.9.9.9.9.9.9.9.9.9
....................
9...................
9.9.9.9.9.9.9.9.9.9.
....................
...................9
.9.9.9.9.9.9.9....

output:

122.0109613149

result:

ok 

Test #18:

score: 0
Accepted
time: 22ms
memory: 15316kb

input:

18 20 3 227
...................9
.9.9.9.9.9.9.9.9.9..
....................
9...................
9.9.9.9.9.9.9.9.9.9.
....................
...................9
.1.1...............9
99999999999999991991
19991999999991999999
99999999999999999999
19991999999999199999
99999999999999999999
199999199999999...

output:

83.3672524846

result:

ok 

Test #19:

score: 0
Accepted
time: 199ms
memory: 38456kb

input:

25 25 3 1000000000
.......................9.
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
9999999999999999999999999
999999999999999999999...

output:

33.3487663497

result:

ok 

Test #20:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

2 1 1 2
1
1

output:

1.0000000000

result:

ok 

Test #21:

score: 0
Accepted
time: 11ms
memory: 37920kb

input:

25 25 2 242
3........................
..71............8.......3
8..7..9....96..4.8...6...
........2...87.1.........
...26.........65396...182
..16....2.4..5....8971...
.....7.8..6...6.7..1..5..
...........914...4...4...
....51..4.....22......6..
6..........8..53.41...4..
.5.4........4...1......82
.....

output:

impossible

result:

ok 

Test #22:

score: 0
Accepted
time: 11ms
memory: 37856kb

input:

25 25 2 273
......9..................
.9..8........2.5.59...962
........5..7....4....7..8
.87....7...2..........4..
....2....5...........87..
81...29..697.......9.483.
448.....1.....46....31...
.3..4.......3....6.......
..4.....7..............6.
...4....4....1..3........
...3..4.13..4..2.2.95..4.
3....

output:

impossible

result:

ok 

Test #23:

score: 0
Accepted
time: 13ms
memory: 38308kb

input:

25 25 3 194
.7.......................
.9.......7...9...........
99.....5.....2..84..3....
.8....9...76..6..6.9..6..
...3..4....6....22.1.....
.2....95...3..4.2.41.....
...7.3..5.46..9..7..25...
2....21....2..83..1....31
94......9.4..............
8........2.1.8.........9.
...68.3.5.9..5...........
9....

output:

35.1574753456

result:

ok 

Test #24:

score: 0
Accepted
time: 4ms
memory: 37924kb

input:

25 25 3 437
5........................
6.6.....6...6..84......5.
2....6.7.7....1..3...7.5.
1...4...7....1.8...667339
6.21648.6.......8.22...9.
.3....3............1.....
...2195...71.............
8....8..31..6.31.5..4...6
.6.1....2......7.......7.
.........5..1.2.9.9......
........3.8..9..64......3
.8...

output:

impossible

result:

ok 

Test #25:

score: 0
Accepted
time: 11ms
memory: 37904kb

input:

25 25 2 422
.4.......................
.....6....2..8....55.....
7.........7........63.1..
.9......8...2..4276......
.........61........7..944
...9..2..7.......1.41...5
...8..2......8...2...9.5.
......6.2.8....27...5....
.3.9......4....9..54....5
.8..6..26........8.2...1.
......8........3.4..4...7
.....

output:

impossible

result:

ok 

Test #26:

score: 0
Accepted
time: 398ms
memory: 38204kb

input:

25 25 3 922193402
7........................
....86...7.9...7.29..5...
....1......1...8.52...5..
7..2....9.3.37...........
.....35.1.86...9555.4..1.
...6.23...7....5.....5..9
8.7....95..65.1.7.....38.
........235............21
5559.2.72.........2...751
...44.527.4.8....8.95....
...7........8...5........

output:

37.1509026360

result:

ok 

Test #27:

score: 0
Accepted
time: 405ms
memory: 38092kb

input:

25 25 3 789168379
......5..................
....6.2.......8.3.28.4.2.
5.....6.88....9...72.2...
..4..8.........1..4...5.4
8773994.3.6.1...1..75...7
2629...79.9.1411.........
.....791.......5..917.6.4
..17.72..9....5.95....9..
...5........7.3.25.4....9
.69..1.....3.....46573...
7......465.69.3..38..8...

output:

31.1509026360

result:

ok 

Test #28:

score: 0
Accepted
time: 0ms
memory: 37832kb

input:

25 25 3 242
............6............
................8.......3
...7.......9.....8.......
........2................
..............6..96.....2
..1.....2..........9.....
.....7....6........1..5..
...........9.4...4.......
....5....................
..............53.........
................1......8.
.....

output:

impossible

result:

ok 

Test #29:

score: 0
Accepted
time: 4ms
memory: 37756kb

input:

25 25 3 434
..2......................
........................5
............3.....3......
.......8.............9...
3..........9.............
.....4..........61.......
..3......................
.....4..............6..1.
.18......................
6........................
...........43...........5
1....

output:

impossible

result:

ok 

Test #30:

score: 0
Accepted
time: 638ms
memory: 28400kb

input:

22 24 3 5550
........1...............
.6.756811649178....7663.
.88..7..55....5..8.1748.
.9.1..9.7243.868.6.....4
3765..93.24..2..1971.9..
7154..959.4...9.2..33.9.
7.673.578.712...59578.97
662....33..867.466.37.99
..5.3.616..1252.7.9317..
.51.9.6..994471.5.932..9
4.3178.2..48.16.43831.8.
....7999.88....

output:

21.2360679775

result:

ok 

Test #31:

score: 0
Accepted
time: 102ms
memory: 38120kb

input:

25 25 1 1000000000
........................1
111.111.111.111.111.111.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1.1.1
1.1.1.1.1.1.1.1.1.1.1...

output:

312.0000000000

result:

ok 

Test #32:

score: 0
Accepted
time: 0ms
memory: 4584kb

input:

10 10 1 100
..........
.....1....
....11....
....11....
....11....
....11....
....11....
....11....
....1.....
..........

output:

8.0000000000

result:

ok 

Test #33:

score: 0
Accepted
time: 1ms
memory: 4536kb

input:

10 10 1 100
..........
.....1....
.....1....
.....1....
.....1....
.....1....
.....1....
.....1....
.....1....
..........

output:

7.0000000000

result:

ok 

Test #34:

score: 0
Accepted
time: 1ms
memory: 3640kb

input:

2 1 1 18
9
9

output:

1.0000000000

result:

ok 

Test #35:

score: 0
Accepted
time: 0ms
memory: 3656kb

input:

2 1 3 18
9
9

output:

1.0000000000

result:

ok 

Test #36:

score: 0
Accepted
time: 304ms
memory: 38160kb

input:

25 25 3 470510254
.........................
.........................
.........................
.........................
.........................
......1..................
.......3.............1...
..............9..........
........6....1...9...9...
.........8.415...........
........6.....1....8.....

output:

26.1443299264

result:

ok 

Test #37:

score: 0
Accepted
time: 11ms
memory: 38208kb

input:

25 25 1 321
..1......................
..1..111...111...111.....
.11.1191..1191..1191..111
11.11..1911.11.11..191191
1.11...111.11.11...111.11
1.19111...11.11.111...11.
1.11191..11.11.1191..11..
11...11.11..1911.11.11...
91..11.11...111.11.11.111
11.11.11.111...11..191191
19.19.191191..11...111.11
11...

output:

320.0000000000

result:

ok 

Test #38:

score: 0
Accepted
time: 11ms
memory: 38048kb

input:

25 25 1 321
..1......................
..1..111...111...111.....
.11.1161..1161..1161..111
11.11..1611.11.11..161161
1.11...111.11.11...111.11
1.16111...11.11.111...11.
1.11161..11.11.1161..11..
11...11.11..1611.11.11...
61..11.11...111.11.11.111
11.11.11.111...11..161161
16.16.161161..11...111.11
11...

output:

320.0000000000

result:

ok 

Test #39:

score: 0
Accepted
time: 156ms
memory: 38036kb

input:

25 25 1 1000000000
..1......................
..1..111...111...111.....
.11.1191..1191..1191..111
11.11..1911.11.11..191191
1.11...111.11.11...111.11
1.19111...11.11.111...11.
1.11191..11.11.1191..11..
11...11.11..1911.11.11...
91..11.11...111.11.11.111
11.11.11.111...11..191191
19.19.191191..11...11...

output:

212.0000000000

result:

ok 

Test #40:

score: 0
Accepted
time: 12ms
memory: 37908kb

input:

25 25 1 320
..1......................
..1..111...111...111.....
.11.1191..1191..1191..111
11.11..1911.11.11..191191
1.11...111.11.11...111.11
1.19111...11.11.111...11.
1.11191..11.11.1191..11..
11...11.11..1911.11.11...
91..11.11...111.11.11.111
11.11.11.111...11..191191
19.19.191191..11...111.11
11...

output:

impossible

result:

ok 

Test #41:

score: 0
Accepted
time: 1ms
memory: 4408kb

input:

10 10 1 100
..........
.....1....
.....1....
.....1....
.....1....
..........
.....1....
.....1....
.....1....
..........

output:

impossible

result:

ok 

Test #42:

score: 0
Accepted
time: 1ms
memory: 4432kb

input:

10 10 1 100
..........
.....1....
..........
..........
..........
..........
..........
..........
.....1....
..........

output:

impossible

result:

ok 

Test #43:

score: 0
Accepted
time: 11ms
memory: 37948kb

input:

25 25 1 1000000000
...9.....................
..99.999...999...999..999
.99.99.9..99.9..99.9..9.9
99.99.99.99.99.99.99.99.9
9.99.99.99.99.99.99.99.99
999.99.99.99.99.99.99.99.
...99.99.99.99.99.99.99..
..99.99.99.99.99.99.99...
.99.99.99.99.99.99.99.999
99.99.99.99.99.99.99.99.9
9.99.99.99.99.99.99.9...

output:

361.0000000000

result:

ok 

Test #44:

score: 0
Accepted
time: 16ms
memory: 38028kb

input:

25 25 1 360
...1.....................
..11.111...111...111.....
.11.1191..1191..1191..111
11.11.11.11.11.11.11.1191
1911.11.11.11.11.11.11.11
111.11.11.11.11.11.11.11.
...11.11.11.11.11.11.11..
..11.11.11.11.11.11.11...
.11.11.11.11.11.11.11.111
11.11.11.11.11.11.11.1191
1911.11.11.11.11.11.11.11
11...

output:

359.0000000000

result:

ok 

Test #45:

score: 0
Accepted
time: 207ms
memory: 38140kb

input:

25 25 1 1000000000
...1.....................
..11.111...111...111..111
.11.1191..1191..1191..191
11.11.11.11.11.11.11.11.1
1911.11.11.11.11.11.11.11
111.11.11.11.11.11.11.11.
...11.11.11.11.11.11.11..
..11.11.11.11.11.11.11...
.11.11.11.11.11.11.11.111
11.11.11.11.11.11.11.1191
1911..1.11..1.11..1.1...

output:

177.0000000000

result:

ok