ntk log ntk

競プロや非競技プロのやったことを書いています.

AtCoder Problemsの使い方(AtCoder Problemsを知らない人向け)

AtCoder Problems

(2020/9/8 追記)この記事を作成したのは2020/04なので,見た目が違ったりバーチャルコンテストの情報が古かったりします.

(2020/11/2 追記)少し内容を整理しました.

AtCoder Problemsとは, @kenkooooさんが作成したサイトです. AtCoder公式サイトの便利リンク集にも載っています.
このサイトでは過去のAtCoderコンテストの問題を一覧することや, バーチャルコンテストに参加することができます.
f:id:ntk_ta01:20200414173826p:plain
kenkooooさんによるAtCoder Problemsの機能紹介などは AtCoder Problems を支える技術 (2019年版) - 宇宙ツイッタラーXの憂鬱 でされています. また, AtCoder Problemsの右上のLinksからFAQに飛べるので, わからないことがあってこの記事を見た人は先にそちらを見るといいかもしれません.
この記事では, Difficultyってなに? バーチャルコンテストってなに? のような人向けにAtCoder Problemsの使い方を紹介します.

Table

まずTableのページについて説明します.
ページ上部にあるUser IDの欄に自分のIDを入れると, 過去に解いたことがある問題の回答状況を知ることができます.
f:id:ntk_ta01:20200415092306p:plain 問題名の背景が白いものは, まだ取り組んでいない問題です. 緑色はAC, つまり正解した問題です. 黄色のものはWAなど, 不正解を出したまま正解していない問題です.
さらに, Show Difficultyと書かれているところにチェックをつけてみましょう.
問題名に色がつき, 問題名の隣に色のついた○が表示されたと思います.
f:id:ntk_ta01:20200414181451p:plain これは問題の推定難易度を表しています.
カーソルを○に合わせると"Difficulty: 数字"と出ます. 数字が大きいほど問題が難しいことを意味しています. 正確に言うと, Difficultyの数字と同じ値のレーティングを持つ人が, その問題を50%の確率で解けるそうです1.
色の種類は灰, 茶, 緑, 水, 青, 黄, 橙, 赤, 銅, 銀, 金とあり, 後ろの色になるほど難しいです.
古い問題になると試験管のマークがついた問題があります. ページの下まで見ると出てくるでしょう. これは試験管のマークがついていない問題よりも, 難易度推定の信頼度が低いことを示しています2.
Show Difficultyの下にあるABCやARC, AGCはコンテストの区分3です. クリックすると, 表示される問題の一覧が変わります.

List

次にListのページの説明をしましょう.
ページ上部のListをクリックするとページが切り替わります. このページでは, 問題を点数やDifficulty順に表示することや, 問題を検索することができます.
Problem Listの下の項目をいくつか選び, 解きたい問題を抽出するような使い方をよくします.
例えば, 200点から400点のRated4の問題のうち, 未ACかつDifficultyが400 - 1199のものを表示したいと思ったら, 下の画像のようにします.
f:id:ntk_ta01:20200414185040p:plain

User

次にUserPageの説明をしましょう.
ページ上部のUserPageをクリックするとページが切り替わります.
クリックできないときは, User IDが入力されていないことがあります.
User PageからはAchievement, AtCoder Pie Charts, Progress Charts, Submissions, Recommendation, Languagesが閲覧できます.
いくつかよく使うものを説明します.

Achievement

Achievementでは, 今までに正解した問題数(Accepted)や, 正解した問題のうちRatedの問題の合計点数(Rated Point Sum), 今までACしていない問題を最もACし続けた日数(Longest Streak)などが見られます. これらの項目は, コンテストのモチベーションを向上させるためや項目自身のランキング上位5を目指すために意識されることが多いです.
f:id:ntk_ta01:20200414190714p:plain

Progress Charts

Progress ChartsのHeatmapは, All Submissions, All AC, Unique ACに分かれています. Unique ACはその日より前にACしていない問題のうち, その日にACされた問題の数です. これが続くと, AchievementのStreakが更新されます. より濃い緑が多くのマスで埋まると嬉しいです.
f:id:ntk_ta01:20200414192553p:plain

Recommendation

Recommendationでは, 自分のレーティングに応じて問題が推薦されます. Show/Hideで試験管のマークがついた問題を含むかどうかが選べます.
Moderateに挑戦して埋めようとする人, Easyをとりあえず解きまくる人などを見かけます.
f:id:ntk_ta01:20200414194928p:plain

Recent Submissions

次にRecent Submissionsの説明ですが, AtCoderの全ての提出のうち最近のものが表示されます. kenkooooさんいわく, "知ってる人を偶然見つけて「おっ、やっとるな」となる気持ちが AtCoder でも味わえるようになりました" だそうです*. たまに味わいますね.

Virtual Contests

そしてVirtual Contestsの説明です.
この機能を使うにはGitHubアカウントを作成し, ログインする必要があります.
ページ右上のLoginをクリックします.
f:id:ntk_ta01:20200414203235p:plain 既にアカウントを持っていればSign inを, 持っていなければ作成してください.
AtCoder ProblemsでログインできたらAccountページになると思います.
Account InfoのAtCoder User IDを自分のIDで更新しておきましょう.
画像では僕のIDになっています.
f:id:ntk_ta01:20200414203705p:plain
AccountページのMyContestsでは自分が開いたバーチャルコンテストや参加したバーチャルコンテストの履歴が見れたり, Problem Listでは自分の問題リストを作成することができます. Problem Listの名前はダブルクリックすると変えられます.
f:id:ntk_ta01:20200414204001p:plain f:id:ntk_ta01:20200415092732p:plain Virtual Contestsの説明に戻ります. このページではバーチャルコンテストを開くことやバーチャルコンテストに参加することができます.
f:id:ntk_ta01:20200414223242p:plain バーチャルコンテストってなに? って人のための説明をします. バーチャルコンテストとは, 解きたい問題を好きな数選び, 制限時間も好みで設定をし, 問題を解く仮想のコンテストです. バチャコン, バチャなどと呼ばれます. AtCoderの公式サイトでもコンテストごとにバーチャル参加する機能がありますが, それとは別です.
たくさんの人に参加を呼びかけ, 本番のコンテストさながらに多くの人と競い合うバーチャルコンテストはとても楽しいです. もちろん1人でこの問題を解くぞ!という風にバチャを作成してもいいと思います. 誰でも参加歓迎, などと書いておくとふらっと誰かが参加してくれることがあります.
自分でバチャを作成したいときには, Running Contestsの上に"Create New Contest"があるので押しましょう.
すると次のページになります.
f:id:ntk_ta01:20200414224835p:plain
ModeはNormalとLockoutがあります6. Normalを選ぶと通常のコンテストと同じ形式になり, Lockoutを選ぶとそれぞれの問題の点数をもらえるのは最初にその問題を正解した人, という形式になります.
その下のBacha Gachaがちょっと面白いです. Difficultyの範囲を指定してからAddを押すと, 問題を自動で選んでくれます. f:id:ntk_ta01:20200414234918p:plain

f:id:ntk_ta01:20200414235152p:plain この機能だけ利用して, バチャを作成せずに特定のDifficultyの問題を抽出する人もいます.
選んだ問題が気に入らなかったら削除して選び直せます. また, 選んだ問題のバチャ内の配点は自由に決めることができます.

ただバチャはやってみたいけれど, 自分で作成するのも面倒だしどれに参加したらいいかわからない…という方のためにオススメのバーチャルコンテストがあります.
あさかつ,よるかつと呼ばれるバチャです.

(2020/9/8 追記)今はよるかつでなく,くじかつが開催されています.

難易度はABCを想定した6問構成で, あさかつは7:30~8:30, よるかつは21:00~22:30の時間帯でほぼ毎日開催されています.
参加者は初心者の方から上級者の方まで幅広く7, よるかつはこの記事を書いた4/14だと100人ほど参加しています!
バチャに参加したいときはRunning ContestsもしくはUpcoming Contestsの欄から参加したいバチャのページに行き, joinを選択することで参加できます. joinが出ていないときはログインできていないことがあります. ログインしましょう.
f:id:ntk_ta01:20200415085136p:plain f:id:ntk_ta01:20200415085154p:plain 開催時間になってからページを更新すると問題のリンクが表示されます. あとは問題を解いていけばバチャの順位表に反映されていきます.
例えば, 4/14のよるかつのようすはこんな感じです.
f:id:ntk_ta01:20200414223918p:plain
ぜひ時間を作って参加してみてください.

Training(beta)

最後にTraining(beta)の説明をします. Trainging(beta)は最近追加されたページで, 300問の問題が用意されています. Challengeを押してぜひ解いてみましょう.
f:id:ntk_ta01:20200415000306p:plain  

説明していないところもありますが, 以上で紹介を終わります.
これで大体の機能の使い方は書けたと思います. ただ今後もAtCoder Problemsが更新され, 機能は増えていくと思います. 記事を書いたときより,今ではもっと機能が増えています!

新しい機能が増えていたら試してみましょう.
AtCoder Problemsが更新されたときは, kenkooooさんがツイートしていることがあります.
フォローしておくのオススメします.

間違ったところやわからないところがあればTwitterで教えてください.


  1. 体感では, 自身のレーティングの色より下の色のDifficultyの問題はほぼ解けます. レートと同色の問題がほぼ解けるか, と言われると難しいです.

  2. AtCoder Problems の難易度推定について - pepsin-amylaseのブログに詳しく書かれています.

  3. ABCはAtCoder Beginner Contestの略で, このコンテストに一番多く参加することになると思います. ARCは現在開催されていません. 2020/11現在,ARCが再開されていますね!AGCはたまに開催される難しめのコンテストです. Other Rated Contestsには企業が主催するコンテストなどがあります.

  4. Ratedの問題とは, レーティング変動のあるコンテスト(主にABC, ARC, AGC, 一部の企業主催コンテスト)の問題です. レーティングシステムが導入される前の問題や, レーティング変動のないコンテストの問題は含まれません.

  5. 例えば, Longest Streakを伸ばすことが競技Longest Streakと呼ばれることがあります. これの一位の人はすごいです. AtCoder ProblemsのLongest Streakが1000になったのでそれについて書く - 気が向いたのでブログを作りました

  6. Lockoutについてhttps://twitter.com/kenkoooo/status/1211653083933003776

  7. AtCoder社長のchokudaiさんも参加していましたhttps://youtu.be/uzBPwz0fP0g