【色変記事】Python で AtCoder 橙になりました

とりゐです.先日に橙色になりましたので,それの報告記事です.

自己紹介

  • 大学四年の理系大学生
  • 大学に入るまでプログラミング経験無し
  • 大学一年の七月に競プロを初めた.競プロ歴は 2 年 10 ヵ月ほど

精進記録

記録は全て 2023 年 5 月 31 日時点のものです.

Rating Graph
Competition History
Achivement
AtCoder Pie Charts その 1
AtCoder Pie Charts その 2
Difficulty Pies

橙になるまでにやったこと

ARC/AGC 埋め

黄色までは ABC でレートを稼げるため,典型さえ押さえておけば戦えますが,黄色以降はそうはいきません.考察力を鍛えるために,特に黄~橙 diff の問題を重点的に埋めていきました.

Codeforces に出る

黄色になってから,Codeforces に積極的に出るようになりました.Codeforces に出る目的はいくつかありますが,その中でも特に,コンテストは(過去問埋めと違って)制限時間があるので,その中での立ち回り方を訓練できるのが大きいと思っています.

作問をする

たくさんしました(TUPC, yukicoder など).入橙になるのに作問がどれだけ寄与したかはわかりませんが,作問をする過程でいろんなことを考えたりするので,そこで考察力を鍛えられたと思います.(TUPC のボス問全然解かれないで悲しいので解いてね!)

atcoder.jp

その他細かいこと

解説を読む

解説は結構ちゃんと読むようにしています.コンテスト中は正当性の確認とか式の整理とかがちゃんとなされないことが多いので,それの確認をしたり,あるいは解説をみて新たな考え方を得たりしています.snuke さんの動画による解説は思考過程が丁寧に解説されているのでよく見ています.おすすめです.

他の人の提出を見る

Python は書き方によって定数倍に大きく差が生じます.Python で実行速度が速い人の提出を見て,どのような書き方が良いのかとか,自分の書き方のどこが良くなかったかをよく確認しています.

デバッグ力をつける

コンテスト中に WA が出て,落ちるケースが思い当たらないときなどは,愚直解と書いてランダムケースを回して比較するようにしています.以前は WA が出たときに落ちるケースを考えたり手作業で探すなどしていたのですが,自分はそれが苦手だと気づいたので,愚直を書いてぶん回すようにしました.これによって救われたことが ARC で 5 回くらいあります.愚直を書くのなんて 5 分もあればできるので,困ったときは躊躇せずに愚直解を書いています.

Python で競プロをやることについて

Python はそこまで有利でもない

Python のメリットとしてコード量が少ないということがしばしば挙げられると思います.これは,初心者にとっては有利になりうると思います.ある程度実力がついて,マクロを作ったりその言語の書き方に慣れたりすれば,このメリットはそんなに有利には働かないと思っています.

PythonAtCoder においてはそこまで不利でもない

AtCoder の問題は遅い言語にも配慮されて作られていることが多いと感じます.私が手を付けた AtCoder の問題のうち,Python だと解けないけど C++ なら解けたという問題はなかったと記憶しています.特に,ARC/AGC は考察に重きが置かれているため TL がきつく設定されていることが多く無く,言語の速度の差異による不利はほとんどないと言っていいでしょう. ただ,想定解でも高速化をめちゃくちゃ頑張らないと通らない問題(ABC258G や ABC274F)や,想定解の計算量に log 一つつけた解法が通らない問題(AGC057B)もあるにはあります.高速な言語による非想定解法を落とすためなので仕方がないですね.でもそんなことは非常にまれなので,Pythoner はそんなに気にしなくて良さそうです.とはいえ,他の言語だと AC できたのに...となると悲しいので,私は c++ を少しずつ勉強していて,Python でダメだったときは c++ に書き換えられるようにしています.

なお,"AtCoder においては" と書いたのは,海外のコンテストでは Python では到底不可能な問題が普通に出題されるからです.あきらめましょう.

なぜ c++ に移行しないのか

c++ を勉強するか,過去問埋めの精進をするかで得られるものを比較したときに,後者の方が得られるものが多いと判断したので,前者の方にはあんまり時間をかけていません.前述したように,Python から c++ に書き換えられる程度で現時点では十分かなと思っています.

今後について

AtCoder 橙になることが割と最終目標だったりしたので,目標がなくなってしまって困りました.赤になりたいとはあんまり思っていません(不可能だと思っているので).競プロをやること自体は楽しいので,当分は目標を作らずにだらだらやろうかなと思います.あとは ARC W も機会があればやってみたいですね.