公式
B - 果物の収穫シーズン / Fruit Harvest Season 解説
by
B - 果物の収穫シーズン / Fruit Harvest Season 解説
by
harurun4635
単純にすべての \(d\) について求めると \(O(NK)\) かかってしまいます。
しかし、 \(d\) 日目開始と \(d+1\) 日目開始での違いは
- \(d\) 日目のアルバイトが無くなり
- \(d+K\) 日目のアルバイトが増える
といった違いしかありません。
よって、
- はじめに \(d = 1\) について \(O(K)\) で求める。
- \(d = 2 , \dots, N - K + 1\) について \(d - 1\) との差を \(O(1)\) で求める
とすれば \(O(N)\) で解く事ができます。
実装例
n, k = map(int, input().split())
w = input().split()
ans = c = sum(w[i] == "S" for i in range(k))
for i in range(n - k):
c -= w[i] == "S"
c += w[i+k] == "S"
ans = max(ans, c)
print(ans)
投稿日時:
最終更新:
