QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#197018#3994. Easy JumpJWRuixiWA 1ms4136kbC++203.7kb2023-10-02 08:05:282023-10-02 08:05:28

Judging History

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

  • [2023-10-02 08:05:28]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4136kb
  • [2023-10-02 08:05:28]
  • 提交

answer

#include <bits/stdc++.h>
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2")
// #define ATC
#define LL long long
#define eb emplace_back
using namespace std;

#ifdef ATC
#include <atcoder/all>
using namespace atcoder;
#endif

mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
const int mod = 998244353;

namespace mystd {
    typedef pair<int, int> pii;
#define fi first
#define se second
#define MP make_pair
    template<typename T, typename _T>
    inline void inc (T &x, const _T &y) { x += y; (x >= mod) && (x -= mod); }
    template<typename T, typename _T>
    inline void dec (T &x, const _T &y) { x -= y; (x < 0) && (x += mod); }
    template<typename T, typename _T>
    inline void cmax (T &x, const _T &y) { (x < y) && (x = y); }
    template<typename T, typename _T>
    inline void cmin (T &x, const _T &y) { (x > y) && (x = y); }
    template<typename T>
    inline void write (const T &Arg) { cout << Arg; }
    template<typename T, typename ..._T>
    inline void write (const T &Arg, const _T &...Args) { cout << Arg, write(Args...); }
    template<typename T>
    inline void read (T &Arg) { cin >> Arg; }
    template<typename T, typename ..._T>
    inline void read (T &Arg, _T &...Args) { cin >> Arg, read(Args...); }
}

using namespace mystd;

const int N = 1005, M = 12;
const double INF = 1e18;
int n, H, S, T1, T2, m;
double f[N][M][M], t[N], p[N];
bool hl[N];

namespace sub1 {
    double g[N][M];
    inline void slv () {
        for (int i = n; i; i--) {
            for (int j = 1; j < H; j++) {
                if (j == 1) {
                    g[i][j] = (p[i] * g[i + 1][j] + (1 - p[i]) * T2 + 1) / p[i];
                } else {
                    g[i][j] = (p[i] * g[i + 1][j] + (1 - p[i]) * g[i][j - 1]) + 1;
                }
            }
        }
        cout << g[1][H - 1];
        exit(0);
    }
}

int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(8);
    cin >> n >> H >> S;
    for (int i = 1; i <= n; i++) cin >> p[i], p[i] /= 100;
    cin >> m;
    for (int i = 1, x; i <= m; i++) {
        cin >> x;
        hl[x] = 1;
    }
    cin >> T1 >> T2;
    if (T1 >= T2) sub1::slv();
    for (int i = n; i; i--) {
        if (!hl[i]) {
            for (int j = 1; j < H; j++) {
                for (int k = 0; k <= S; k++) {
                    if (j == 1) {
                        if (k > 0) {
                            f[i][j][k] = (p[i] * f[i + 1][j][k] + (1 - p[i]) * (f[i][j][k - 1] + T1)) + 1;
                        } else {
                            f[i][j][k] = (p[i] * f[i + 1][j][k] + (1 - p[i]) * T2 + 1) / p[i];
                        }
                    } else {
                        f[i][j][k] = (p[i] * f[i + 1][j][k] + (1 - p[i]) * f[i][j - 1][k]) + 1;
                    }
                }
            }
        } else {
            for (int j = 1; j < H; j++) {
                for (int k = 0; k <= S; k++) {
                    f[i][j][k] = INF;
                }
            }
            for (int B = 1; B < H; B++) {
                t[B] = (p[i] * f[i + 1][B][S] + (1 - p[i]) * T1 + 1) / p[i];
                for (int j = B - 1; j; j--) 
                    t[j] = t[j + 1] + T1;
                for (int j = B + 1; j < H; j++)
                    t[j] = (p[i] * f[i + 1][j][S] + (1 - p[i]) * t[j - 1]) + 1;
                for (int j = 1; j < H; j++)
                    f[i][j][S] = min(f[i][j][S], t[j]);
            }
            for (int j = 1; j < H; j++) 
                for (int k = S - 1; k; k--)
                    f[i][j][k] = f[i][j][k + 1];
        }
    }
    cout << f[1][H - 1][S];
}
// I love WHQ!

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3884kb

input:

1 2 0
50
0
1 2

output:

4.00000000

result:

ok found '4.0000000', expected '4.0000000', error '0.0000000'

Test #2:

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

input:

2 3 1
50 50
1 1
1 3

output:

6.00000000

result:

ok found '6.0000000', expected '6.0000000', error '0.0000000'

Test #3:

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

input:

1 6 4
75
0
64 6

output:

1.34114583

result:

ok found '1.3411458', expected '1.3411458', error '0.0000000'

Test #4:

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

input:

1 5 1
61
1 1
15 43

output:

2.20822320

result:

ok found '2.2082232', expected '2.2082232', error '0.0000000'

Test #5:

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

input:

10 9 3
12 65 76 33 17 20 89 16 4 63
3 2 4 8
73 21

output:

942.41484201

result:

ok found '942.4148420', expected '942.4148420', error '0.0000000'

Test #6:

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

input:

10 6 0
26 6 29 76 92 46 8 4 91 44
1 4
17 6

output:

401.86686298

result:

ok found '401.8668630', expected '401.8668630', error '0.0000000'

Test #7:

score: -100
Wrong Answer
time: 1ms
memory: 4136kb

input:

100 3 5
85 59 20 75 58 42 79 95 22 15 95 81 69 73 45 42 99 93 58 8 18 34 88 14 23 37 87 16 96 17 40 58 32 26 93 9 37 15 68 49 99 73 48 79 16 27 52 4 66 53 48 55 27 56 52 66 25 30 34 11 97 20 38 30 4 78 17 98 4 23 30 71 87 94 89 71 45 92 72 24 90 24 78 48 62 82 30 30 27 55 64 66 41 72 53 97 59 38 80 ...

output:

999997908121193088.00000000

result:

wrong answer 1st numbers differ - expected: '13395.8550625', found: '999997908121193088.0000000', error = '74649800513254.7656250'