ABC338

5完。素早く正確に解くことができないとレーティングは下がるけど、それはどうでもよくて、コンテスト中の時間を有効に使えないから無能感が出る。実際はレーティングかなり気にしてるけど、unratedなコンテストでもそれなりに集中できるし、レーティングを気にして虚無デバッグするみたいなデメリットもあり、コンテストという形式が自分にとっていいのかな。

A - Capitalized?

これは時間かかる。isupper使おうと思ったけどアンダースコアが入ってると思っててサジェストされず使えなかった。全ての文字に対し、条件を満たすか確認する。

B - Frequency

文字数をカウントして最初の最大値を求める。サンプル通ってからの見直しで「アルファベット順で最も早い」というサンプルの説明を見てドキッとした(Sの中で最も左にしちゃったかと思った)が、ちゃんとそのように実装していた。

C - Leftover Recipes

見慣れない形式なので面食らってしまう。落ち着いて考えれば、料理Bを何個作るかを全探索するだけ。0個から順番に調べて、その個数を作るのに足りなくなったら抜ける。料理Aがいくつ作れるかは割り算して最小値だが、0の扱いにしっかりした理解がないまま提出した。今考えると、0/0はほんとに不定なんだなって感じだ。

D - Island Tour

島から島へM-1回移動する。そのうちの1回に注目する。島i0から島i1へ移動するとき、2通りの経路があるが、そのうち短いほうに含まれる橋を封鎖されたら長いほうとの差のぶんだけツアーが長くなる。これはいもす法だ。円を切り開く必要があるので、境界をまたぐかどうかで素直に場合分けする。ステップ数が多く、20分近くかかった。

E - Chords

等間隔というのを忘れて解いていた。交差しないのはサンプル2みたいな縞々だけか?と思ったら入れ子みたいなのもあって怖!間隔がばらばらだろうが線が曲がってようが話は変わらない(いや、交点が存在しないようにはできないみたいな話)。雰囲気的にスタックなのでそのまま未証明で書く。最初は、1つの弦をとってそれで2つに分けてというのを考えていたが、単に各点がどの弦に属するか記録しておいて同じのが来たら消すというのを点1からやるだけ。最終的に何もなくなったら交点なし。

解説、切り開くことができるのかあ。

F - Negative Traveling Salesman

コンテスト中に3WA、終了後に2WAした。それについてはツイートした。こういうときはスコア最大化問題を解きましょう。
https://twilog.togetter.com/merom686/date-240127

WAを出す前にもかなりデバッグで時間を使っていて、DPテーブルの初期化したところを塗り潰してしまったり、cin >> u >> v >> w[u][v]; とかコピペで書いてしまったり(u,vが使えたとしても0-indexedに直してない)、2点間の最小値を得るところで添え字をi,j間違えたり、そこは正しく動いていたのにベルマンフォードの処理を追ったり。

これ、答えの絶対値としてありえる最大値は何ですか。

ポイントとしては、2点間の移動のベストを前計算しておくこと。解説の「切り開く」やつは気づいてなかった。

もう書く気力がねえよ。