結果

問題 No.252 "良問"(良問とは言っていない (2)
コンテスト
ユーザー maspy
提出日時 2020-03-07 01:14:30
言語 Python3
(3.15.2 + numpy 2.5.4 + scipy 1.18.1 + ACL)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
AC  
実行時間 1,665 ms / 2,000 ms
+ 891µs
コード長 866 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 80 ms
コンパイル使用メモリ 14,848 KB
実行使用メモリ 89,008 KB
最終ジャッジ日時 2026-10-28 10:51:05
合計ジャッジ時間 10,110 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 14
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#!/usr/bin/env python3
# %%
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
import numpy as np


# %%
T = int(readline())
S = np.array(list(read().rstrip()), dtype=np.int8)

# %%
G = np.zeros(len(S), dtype=np.int64)
P = np.zeros(len(S), dtype=np.int64)

for i, ch in enumerate(b'problem'):
    P[:-6] += (S[i: len(S) - 6 + i] != ch)

for i, ch in enumerate(b'good'):
    G[:-4] += (S[i: len(S) - 4 + i] != ch)

ind = np.where(S == ord('\n'))[0]
Ss = np.split(S, ind)
Gs = np.split(G, ind)
Ps = np.split(P, ind)


# %%
def solve(S, G, P):
    if S[0] == ord('\n'):
        S = S[1:]
        G = G[1:]
        P = P[1:]
    G[7:] += np.cumsum(P[:-7] == 0)
    G = np.minimum.accumulate(G[:-10])
    cost = G + P[4:-6]
    return cost.min()


for S, G, P in zip(Ss, Gs, Ps):
    print(solve(S, G, P))
0