Official

A - DEGwer's Doctoral Dissertation Editorial by hitonanode


以下の貪欲法が正当です。

  • 全ての誤植を、それらが存在するページで昇順ソートする。
  • ソート後の先頭の要素から、その誤植を修正するかどうか決めていく。今見ている誤植が、修正しないことに決めた最後の誤植から \(T\) ページ未満しか離れていない場合、その誤植を修正する。それ以外の場合は修正しない。

計算量は、最初のソートに比較ソートを用いると \(O(K \log K)\) で、バケットソートを用いれば \(O(N + K)\) で実装することも可能です。

実装例(Python)

N, K, T = map(int, input().split())

A = sorted(map(int, input().split()))

last_typo_pos = -T
ret = 0

for a in A:
    if a < last_typo_pos + T:
        ret += 1
    else:
        last_typo_pos = a

print(ret)

posted:
last update: