提出 #6236077


ソースコード 拡げる

import sys
input = sys.stdin.readline
import numpy as np

# 0 の個数 - 1 の個数 で累積和を見る
# 最大値、最小値、現在地を持つ
# とパラメータが多いので、現在地が0になるように平行移動して持つ

N,K = map(int,input().split())
S = input().rstrip()

MOD = 10 ** 9 + 7
dp = np.zeros((K+1, K+1), dtype=np.int64)
dp[0,0] = 1

for s in S:
    prev = dp
    dp = np.zeros_like(prev)
    if s in '0?':
        # 最大値を更新しなかった場合
        # 最大値に近づいて最小値から遠のく
        dp[:-1,1:] += prev[1:,:-1]
        # 最大値を更新する場合
        # 最小値からは遠のく
        dp[0,1:] += prev[0,:-1]
    if s in '1?':
        dp[1:,:-1] += prev[:-1,1:]
        dp[1:,0] += prev[:-1,0]
    dp %= MOD

select = (np.arange(K+1)[:,None] + np.arange(K+1)[None,:] <= K)
answer = dp[select].sum() % MOD
print(answer)

提出情報

提出日時
問題 C - 偶然ジェネレータ
ユーザ maspy
言語 Python (3.4.3)
得点 100
コード長 943 Byte
結果 AC
実行時間 662 ms
メモリ 20520 KiB

ジャッジ結果

セット名 Sample Subtask1 Subtask2 Subtask3
得点 / 配点 0 / 0 10 / 10 30 / 30 60 / 60
結果
AC × 4
AC × 14
AC × 14
AC × 34
セット名 テストケース
Sample subtask0-sample-01.txt, subtask0-sample-02.txt, subtask0-sample-03.txt, subtask0-sample-04.txt
Subtask1 subtask0-sample-01.txt, subtask0-sample-02.txt, subtask0-sample-03.txt, subtask0-sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt
Subtask2 subtask0-sample-01.txt, subtask0-sample-02.txt, subtask0-sample-03.txt, subtask0-sample-04.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt
Subtask3 subtask0-sample-01.txt, subtask0-sample-02.txt, subtask0-sample-03.txt, subtask0-sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask3-01.txt, subtask3-02.txt, subtask3-03.txt, subtask3-04.txt, subtask3-05.txt, subtask3-06.txt, subtask3-07.txt, subtask3-08.txt, subtask3-09.txt, subtask3-10.txt
ケース名 結果 実行時間 メモリ
subtask0-sample-01.txt AC 296 ms 20520 KiB
subtask0-sample-02.txt AC 148 ms 12248 KiB
subtask0-sample-03.txt AC 148 ms 12504 KiB
subtask0-sample-04.txt AC 147 ms 12408 KiB
subtask1-01.txt AC 149 ms 12280 KiB
subtask1-02.txt AC 147 ms 12504 KiB
subtask1-03.txt AC 147 ms 12408 KiB
subtask1-04.txt AC 147 ms 12408 KiB
subtask1-05.txt AC 146 ms 12504 KiB
subtask1-06.txt AC 147 ms 12248 KiB
subtask1-07.txt AC 148 ms 12408 KiB
subtask1-08.txt AC 147 ms 12504 KiB
subtask1-09.txt AC 147 ms 12408 KiB
subtask1-10.txt AC 147 ms 12504 KiB
subtask2-01.txt AC 151 ms 12504 KiB
subtask2-02.txt AC 156 ms 12504 KiB
subtask2-03.txt AC 158 ms 12504 KiB
subtask2-04.txt AC 159 ms 12504 KiB
subtask2-05.txt AC 159 ms 12408 KiB
subtask2-06.txt AC 160 ms 12508 KiB
subtask2-07.txt AC 158 ms 12408 KiB
subtask2-08.txt AC 158 ms 12504 KiB
subtask2-09.txt AC 159 ms 12504 KiB
subtask2-10.txt AC 158 ms 12508 KiB
subtask3-01.txt AC 156 ms 12504 KiB
subtask3-02.txt AC 167 ms 12408 KiB
subtask3-03.txt AC 158 ms 12408 KiB
subtask3-04.txt AC 157 ms 12504 KiB
subtask3-05.txt AC 160 ms 12504 KiB
subtask3-06.txt AC 167 ms 12508 KiB
subtask3-07.txt AC 662 ms 14720 KiB
subtask3-08.txt AC 161 ms 12504 KiB
subtask3-09.txt AC 160 ms 12504 KiB
subtask3-10.txt AC 161 ms 12504 KiB