結果

問題 No.309 シャイな人たち (1)
ユーザー tjaketjake
提出日時 2015-12-02 17:10:40
言語 Python2
(2.7.18)
結果
WA  
実行時間 -
コード長 1,136 bytes
コンパイル時間 424 ms
コンパイル使用メモリ 6,644 KB
実行使用メモリ 7,200 KB
最終ジャッジ日時 2023-10-12 09:01:05
合計ジャッジ時間 3,559 ms
ジャッジサーバーID
(参考情報)
judge11 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 AC 179 ms
7,120 KB
testcase_02 WA -
testcase_03 AC 184 ms
6,996 KB
testcase_04 AC 27 ms
6,156 KB
testcase_05 AC 76 ms
6,540 KB
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 AC 11 ms
5,988 KB
testcase_14 AC 11 ms
6,024 KB
testcase_15 AC 89 ms
6,448 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

inputs = lambda:map(int, raw_input().split())
r, c = inputs()
raw_input()
p = [inputs() + [0] for i in xrange(r)] + [0]*(c+1)
raw_input()
s = [inputs() + [4] for i in xrange(r)] + [4]*(c+1)

dp = [[0]*(2**c) for i in xrange(r+1)]
dpb = [[0]*c for i in xrange(r+1)]

dp[0][0] = 1.0

bit = [[(i>>k)&1 for k in xrange(c+1)] for i in xrange(2**c)]
ans = 0
for i in xrange(r):
    si = s[i]
    pi = p[i]
    dpp = dp[i]
    dpi = dp[i+1]
    dpbp = dpb[i]
    dpbi = dpb[i+1]
    for S in xrange(2**c):
        bit_s = bit[S]
        res = 1.0
        for j in xrange(c):
            x = bit_s[j-1]; y = bit_s[j+1]
            if x+y >= si[j]:
                res *= pi[j]/100.0 if bit_s[j] else (100-pi[j])/100.0
            elif x+y+1 >= si[j]:
                rp = dpbp[j] * (pi[j]/100.0 if bit_s[j] else (100-pi[j])/100.0)
                if not bit_s[j]:
                    rp += (1-dpbp[j])
                res *= rp
            elif bit_s[j]:
                res = 0.0
        dpi[S] += res
        for j in xrange(c):
            if bit_s[j]:
                dpbi[j] += res
    for j in xrange(c):
        ans += dpbi[j]
print ans
0