2023年2月12日日曜日

Codeforces Round #849 (Div. 4)

 全完と思ったらG2をHackされてしまった。

コンテスト後のツイート

G2. Teleporters (Hard Version)

 解説AC。

 ツイートで書いたのは本質的に間違っていた。(大枠はあっているので、このツイートの解法だけ読むと正しいようにも見えるが、正しい解法を理解はしていなかった)

 ツイートの通り、

・0もしくはn+1から行ってテレポートするまでのコストを前計算し、小さい順に取っていく

 として、0から行ったものが一つでもあればOK。問題は全てn+1から行っていた場合。

 一回だけ0から行き、他はn+1から行くことになるので、n+1だけから行ったものだけをソートし(Bとする)、累積和を取っておく。その上で、

・0から行ってi番目のものを取ったとする。すると、残りは、c-(A[i]+i+1)。これを累積和に対して二分探索し、そのindexをxとする。xより前にBにA[i]+(n-i)があるか調べ、あればx-1が答えの候補。なければ、xが答えの候補。

・さらに、xの前にA[i]+n-iがある場合は、c-(A[i]+i+1)+(A[i]+n-i)まで使えるので、これを累積和に対して二分探索する。似たような場合分けして、答えの候補が得られる。

 という感じで解ける。
 後半の処理がDiv.4にしてはかなり難しかった。
 また、この説明では添え字をいい加減に書いているが、添え字を合わせるのも大変。

0 件のコメント:

コメントを投稿