提出 #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 | ||||||||
| 結果 |
|
|
|
|
| セット名 | テストケース |
|---|---|
| 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 |