1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

 新人競プロerの山田です。
 ABCDF5完、503位、perf1898、rate変動999→1142でした。

A問題 B問題

 はい。(ここまで5分22秒0ペナ)

C問題

 順列全探索しか思いつかないが、順列全探索にしてはn≦10という制約がそこまで小さくない。10!をグーグルに計算させたところ300万ぐらいだったので行けるか……?と思いながらnext_permutation使って実装。結果1748ms(制約2sec)で通った。あぶねえええええええ。
 Pythonでやってたら通ってなかったと思うとなんかズルした感もある。しかし言語間の有利不利も含めて競技なんだと割り切った。そうしないとこのあと焦る。ここまでで24分56秒0ペナ。(所要時間19分。結構かかってるな。何に時間取られたか覚えていない。日記はコンテスト当日に書くべきか)

 コンテスト終了後にツイッターで見かけたが、Pythonで通した人は200人に満たないらしい。そこまで攻めた制約にすることあるか。

D問題

 〇〇番目の回文数はなんですか問題。丁寧に実装しなければ自爆すると思って、コメントを多めにつけながらAC。ここまでで48分53秒0ペナ。(所要時間24分。デバッグに時間がかかった)
 350点問題にしてはかなり時間がかかった。ここまで丁寧にやるのが正解だと思った。

E問題

 島水没問題。5分ぐらい考えたがわからなかった。飛ばしてF問題を見た(点数差が50点しかないので、そこまで難易度差がないと思った)。
 解答見てもここでどうやってpriority_queueを思いつくのか不明。

F問題

 回文で数式を書け問題。
 これに手を付けたのが勝利の始まり。
 解法はすぐに浮かんだ。nの約数とそれを逆さ読みした数を、割れるときに割っていって、回文数が出てきたら数式を作れる。作れなかったら戻って別の逆さ読み約数で割れるものを探す、というのを再帰関数を書くという解法(説明むず)。しかし計算量がよくわからない。
 この解法でやるなら再帰関数を書かなければならない。再帰関数の書き方に慣れていなくて時間がかかってE問題を落としたこともある(ABC357)が、当時よりは成長していたらしく実装できた。
 サンプルが合わなかった。けれどすぐに「出力にゼロを含んではいけない」ことをに気づき修正。
 サンプルが全部合った。けれど計算量が全くわからないし、ここから計算量を落とす方法はいくつか浮かぶが、残り時間が少なすぎるので投げた。
 22:33:18 AC(0ペナ)。ちなみにC問題と同じく実行時間は超ギリギリ。
 ここで順位表を見たら山田は500位でガッツポーズ。ABCDE5完のすべての人より上なのが強すぎる。

コンテスト終了

 競プロにおけるC++の有利さを実感した回。史上最高perfでしたがもし山田がPython勢だったら3完しかできていなかった可能性が高いです。
 それにしても今回は強運でした。もしE問題の解法が普通に浮かび、飛ばしていなければいつも通り水色perfでした。F問題の相性もたまたま良かったです。
 これからF問題を解ける確率があがっていけば、Eを先に解くかFを先に解くかという駆け引きが重要になっていきそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?