提出 #50637204


ソースコード 拡げる

#include <bits/stdc++.h>
#include <atcoder/modint>
#include <atcoder/segtree>

using Num = int;
using Numeric = double;

Numeric apply(Numeric a, Numeric b) {
    return a + b;
}

Numeric unit() {
    return 0;
}

void solve(std::istream& is, std::ostream& os) {
    Num n, l, d;
    is >> n >> l >> d;

    using SegTree = atcoder::segtree<double, std::plus<>{}, [] { return 0; }>;
    const Num size = n + 1;
    SegTree tree_dealer(size);
    tree_dealer.set(0, 1.0);

    for(Num i{1}; i<=n; ++i) {
        Num left = std::max(0, i-d);
        Num right = std::min(i, l);
        if (left < right) {
            const auto p = tree_dealer.prod(left, right) / d;
            tree_dealer.set(i, p);
        }
    }

    std::vector<Numeric> win_player(size);
    for(Num i{0}; i<=n; ++i) {
        win_player.at(i) = 1.0 - tree_dealer.prod(std::max(i, l), size);
    }

    std::vector<Numeric> cumsum {0.0};
    for(Num i{0}; i<=n; ++i) {
        const auto hit = (cumsum.back() - cumsum.at(std::max(i-d, 0))) / d;
        const auto stand = win_player.at(n-i);
        const auto p = cumsum.back() + std::max(hit, stand);
        cumsum.push_back(p);
    }

    os << std::setprecision(20) << (cumsum.back() - cumsum.at(cumsum.size() - 2)) << "\n";
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

提出情報

提出日時
問題 F - Black Jack
ユーザ zettsut
言語 C++ 20 (gcc 12.2)
得点 550
コード長 1374 Byte
結果 AC
実行時間 28 ms
メモリ 12584 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 550 / 550
結果
AC × 2
AC × 22
セット名 テストケース
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt
ケース名 結果 実行時間 メモリ
00_sample_01.txt AC 4 ms 3724 KiB
00_sample_02.txt AC 25 ms 12436 KiB
01_test_01.txt AC 14 ms 12364 KiB
01_test_02.txt AC 14 ms 12368 KiB
01_test_03.txt AC 13 ms 7716 KiB
01_test_04.txt AC 1 ms 3748 KiB
01_test_05.txt AC 9 ms 5584 KiB
01_test_06.txt AC 23 ms 12096 KiB
01_test_07.txt AC 18 ms 11304 KiB
01_test_08.txt AC 7 ms 5548 KiB
01_test_09.txt AC 24 ms 11960 KiB
01_test_10.txt AC 15 ms 8180 KiB
01_test_11.txt AC 26 ms 12416 KiB
01_test_12.txt AC 25 ms 12344 KiB
01_test_13.txt AC 25 ms 12356 KiB
01_test_14.txt AC 26 ms 12408 KiB
01_test_15.txt AC 26 ms 12424 KiB
01_test_16.txt AC 25 ms 12348 KiB
01_test_17.txt AC 24 ms 12352 KiB
01_test_18.txt AC 28 ms 12324 KiB
01_test_19.txt AC 28 ms 12492 KiB
01_test_20.txt AC 28 ms 12584 KiB