Codeforces Round #494 (Div. 3) F. Abbreviation
問題リンク
https://codeforces.com/contest/1003/problem/F
問題概要
n個の単語が与えられる。単語同士の間に空白をおいて連結した文字列について、2つ以上の単語を連結したものを略語で表すとき最小の長さはいくつになるか。
例えば、to be or not to be なら, to be を略語に置き換えて(to be を TB), TB or not TBとなり, 18字から12字になる。
考えたこと
(ある文字の長さ)* (文字の頻度)が最も大きいものを略字で表せばよい。
文字の出現回数及び出現するindexはKMP法を使えば求めることができるので, を満たすについてチェックすればよい
全体の計算量は でなので十分間に合う
文字で扱うといろいろ面倒なので数字に変換する。
ACコード
感想
stringがキーのmapを持つとTLEしたので注意したい。大小比較で, 検索で。