今回は比較的難易度が低かったようですね。Not条件通りにif文を書くだけです。Parallelこれまた条件通りに計算していけばいいです。Aで求められますからそれを粛々と計算していくだけです。Alchemist価値の低い具材二つを選んで合成していくのが一番高いです。それを例えばC++ならmultisetを使えば楽に実装できます。私はmultisetを使うべきところでsetを使ってしまい1WA出してしまいました。うーん、詰めが甘い・・・。Ki木を構築します操作で示された頂点(だけ)に値を加算していきます根から再帰で降りていって親の値を子に伝播させていきます終わりです。Impurityまずtに含まれていてsに含まれていない文字がある場合、当然構築できないので-1です。sは10100回と、充分な回数連結されるので、文字種は足りているけど長さが足りずに構築できないということは考える必要がありません。あとは、tの文字列の先頭の文字から順にsを検索していって、文字数を積んでいくだけです。注意するのは、検索開始位置は前回のヒット位置の後ろからになることと、単純なループで回すと安定のTLEなので効率のいい検索関数を使うことくらいですね。私はついうっかり二重ループ解を投げて1TLEでした。Coincidence「何らかの」規則性があることは、上図のとおり実験によりわかりました。その規則性を式に落とす時間も実装する時間もありませんでした。