AtCoder Problems User Guide
問題を探す
問題は以下の基準で検索することができます。
- AC/非ACで絞り込み
- AtCoder公式の点数で絞り込み
- 独自に算出したDifficultyで絞り込み
- 問題タイトル・コンテスト名・FAユーザー・最短ユーザー・最速ユーザー・etcで検索
問題の探し方
- ページ左上のUser IDに自分のAtCoder IDを入力し、ページ上部の
Listを選択します。 - Problem Listの下にある項目をそれぞれ選ぶことで、AC/非AC、AtCoder公式の点数、Difficultyを基準に問題を絞り込むことができます。
- 問題の名前が分かる場合や、Fastest(実行時間が最短)
Shortest(コード長が最短)、First(提出時間が最も速い)ユーザーを基準に検索する場合は、右側にある
Searchに問題名やユーザー名を入力することで検索できます。
進捗確認
Userタブから確認することができます。
Achievement
AC数(今までに正解した問題数)、Rated Point Sum(正解した問題のうちRatedの問題の合計点数)、Current Streak(今まで解いていない問題を新たに解き続けた日数)などを数値で確認できます。
AtCoder Pie Charts
全体の出題数のうち、AC、Non-AC(提出したがACしていないもの)、NoSub(提出していないもの)の割合を円グラフで確認できます。
Difficulty Pies
各Difficultyごと(灰色、茶色、緑色、......)にAC、Non-AC(提出したがACしていないもの)、NoSub(提出していないもの)の割合を円グラフで確認できます。
Category Pies
コンテストの種別ごとにAC、Non-AC(提出したがACしていないもの)、NoSub(提出していないもの)の割合を円グラフで確認できます。
Progress Charts
Daily Effort
一日ごとのAC数を確認できます。
Climbing
今までの累計AC数をDifficultyで色分けされた状態で確認できます。
Heatmap
GitHubのコントリビューションと同じ形式で一日ごとのAC数を確認できます。 All Submissions、 All AC、 Unique AC(初めてACした問題)、Max Difficulty(その日ACした問題のDifficultyの最大値)に分かれています。
Submissions
今までに提出したコードの正解状況や言語の一覧を確認できます。
Languages
提出言語ごとにAC数、Longest Streak、Current Streak、Last AC(最後にACした日付)を確認できます。
Trophy
特定の実績を達成するとTrophyをもらえます。どのような名前のTrophyをもらえるかは、達成してからのお楽しみです。
All
全ての項目を1つのページで確認できます。
レコメンド
自身の現在のレーティングを基に、自動的にお勧めの問題を表示する機能です。 UserページのRecommendationタブから確認することができます。 Easy/Moderate/Difficultの3つから問題の難易度を選ぶことができます。
また、過去に一度でも正解した問題や、最近正解した問題を推薦から除外することもできます。
詳細な説明
- Easyは80%、Moderateは50%、Difficultは20%の確率で解ける難易度の問題となっています。
- Exclude ~~~は、レコメンドから除外する問題の種類を選ぶものです。
- Don't exclude solved problemsを選んだ場合、全ての問題がレコメンド対象となります。
- 右側にある数字は、画面上に表示するレコメンドの数を選択するものです。
- 問題タイトルの左にあるチェックボックスで問題を選択すると、選択した問題でバーチャルコンテストを作ることができます。
バーチャルコンテスト
バーチャルコンテストは、解きたい問題と制限時間を自由に選んで参加できる仮想のコンテストです。
参加のための下準備
まず、右上の Login からGitHubアカウントでログインします。(GitHubアカウントを持っていない場合は、作成してください。) その後、 AtCoder ID を入力して保存します。
バーチャルコンテストを作る
- 右上のVirtual Contestsをクリックすると、バーチャルコンテストのページが開きます。
Create New Contestをクリックすると、コンテスト作成ページに飛びます。- ページ内の表記に従って日時や問題を指定し、最後に
Create Contestをクリックすると、コンテスト作成は完了です。
- バーチャルコンテスト作成のヒント
- Bacha Gacha
- Difficultyの範囲を指定すると問題をランダムに選んでくれる機能です。
- Expected Participantsに参加者のAtCoder IDを入力してExclude ~~~を指定すると、参加者が解いたことのある問題を除外できます。公平性を保ちたい場合にお勧めです。
- Mode
- Normal, Lockout, Trainingの3種類があります。
- Normalは通常モードです。参加者は、合計得点とペナルティによって順位付けされます。
- Lockoutでは、各問題で最初に正解した人のみが得点を得られます。
- Trainingでは、順位表の表示が簡略化されます。問題数が多い場合にお勧めのモードです。参加者は、正解した問題の総数、次に最後に正解した提出の時間によって順位付けされます。
- Bacha Gacha
バーチャルコンテストに参加する
- 右上のVirtual Contestsをクリックすると、バーチャルコンテストのページが開きます。
Running ContestsやUpcoming Contestsから、参加したいコンテストを選びます。
Joinをクリックすると、参加登録は完了です。 - 時間になると問題が表示されます。
- AtCoder上でACとなってから数分経つと、バーチャルコンテストの順位表でも正解状況が更新されます。
トレーニングモード
初心者向けの問題が300問用意されています。
左上のTrainingから開くことができます。Challengeをクリックすると問題が表示されます。
その他
用語解説
-
Difficulty
- 現在の内部レーティング(補正されていないレーティング)がこの値の人がコンテストでその問題を見たら50%の確率で解けると考えられる値です。
- 推定難易度の横に試験管の絵文字(🧪)がついている問題があります。これは公式のレーティングシステムが導入される以前の問題に対して、やや強引な手法で難易度を推定したものです。
- DifficultyがXの問題は「レーティングがXの人の半分が解ける問題」という意味で「レーティングXの人全員が解ける問題」という意味ではありません。
-
Streak
- 今まで解いていない問題を新たに解き続けた日数です。
- Longest StreakはJST、Current StreakはLocal Timeに基づいて集計されます。
- 今までに解いたことのある問題を再び解いても、Streakのカウントが増えることはありません。
参考資料
ユーザーガイドを作るにあたって以下のwebページを参考にさせていただきました。
- https://ntk-ta01.hatenablog.com/entry/2020/04/15/001405
- https://trap.jp/post/992/
- https://pepsin-amylase.hatenablog.com/entry/atcoder-problems-difficulty
問題リスト作成
自分だけの問題リストを作って、復習等に使うことができます。
使い方
- 右上の Login からログイン後に AtCoder ID を入力して保存します。
- ログイン後のメニューに My Lists タブが出てくるので、Create New Listを押して編集画面に入ります。
- Addを押すと、Search here to add problems と出てくるので、リストに入れたい問題のタイトルを入力し、問題を選択します。
- 削除したい場合はRemoveを押すと削除されます。
進捗リセット
既にACした問題を、まだACしていない問題として扱うように設定できます。
使い方
- 右上の Login からGithubアカウントでログインした後に、 AtCoder ID を入力して保存します。
- ログイン後のメニューに Reset Progress タブが出てくるので、問題を指定すると、進捗がリセットされます。
開発者向け・Contribution
AtCoder Problemsの中身についての解説と、Contribution についてまとめたページです。
AtCoder Problems のコンポーネント
AtCoder Problemsの中身について解説します。
クローラー(Rust)
- 提出クローラー
- コンテスト・問題クローラー
APIサーバー(Rust)
フロントエンド(TypeScript)
集計バッチ(Rust)
- 差分集計
- 全提出集計
難易度推定(Python)
Contribution
機能を追加したい・機能を修正したい
要望を出したい・バグを報告したい
サーバー代をカンパしたい
Finding Problems
You can search for problems based on the following criteria:
- Filter by AC/non-AC
- Filter by AtCoder official score
- Filter by difficulty calculated independently
- Search by problem title, contest name, FA user, fastest user, etc.
How to Search for Problems
- Enter your AtCoder ID in the User ID field at the top left of the page, and select
Listat the top of the page. - By selecting the items under Problem List, you can filter problems based on AC/non-AC, AtCoder official score, and difficulty.
- If you know the problem's name or want to search based on Fastest (shortest execution time), Shortest (shortest code length), or First (fastest submission time) users, you can enter the problem name or user name into the
Searchfield on the right.
Progress Tracking
You can check from the User tab.
Achievement
You can view numbers such as AC count (number of problems solved correctly), Rated Point Sum (total score of solved rated problems), and Current Streak (number of consecutive days solving new problems).
AtCoder Pie Charts
You can view pie charts showing the proportions of AC, Non-AC (submitted but not solved), and NoSub (not submitted) problems out of the total number of problems.
Difficulty Pies
You can view pie charts showing the proportions of AC, Non-AC (submitted but not solved), and NoSub (not submitted) problems for each difficulty level (grey, brown, green, etc.).
Category Pies
You can view pie charts showing the proportions of AC, Non-AC (submitted but not solved), and NoSub (not submitted) problems for each contest category.
Progress Charts
Daily Effort
You can view the number of ACs per day.
Climbing
You can view the cumulative number of ACs, color coded by difficulty.
Heatmap
You can view the number of ACs per day in the same format as GitHub contributions. It is divided into All Submissions, All AC, Unique AC (problems solved for the first time), and Max Difficulty (the highest difficulty of problems solved that day).
Submissions
You can view the list of your submitted codes, their correctness status, and the languages used.
Languages
You can view the number of ACs, Longest Streak, Current Streak, and Last AC (date of the last AC) for each submission language.
Trophy
You can earn trophies by achieving specific milestones. The names of the trophies are a surprise until you achieve them.
All
You can view all items on one page.
Recommendation
This feature automatically displays recommended problems based on your current rating. You can check it from the Recommendation tab on the User page. You can choose the difficulty of the problems from Easy, Moderate, or Difficult.
Additionally, you can exclude problems that you have solved once or recently from the recommendations.
Detailed Explanation
- Easy problems are those with an 80% chance of being solved, Moderate problems with a 50% chance, and Difficult problems with a 20% chance.
- Exclude ~~~ allows you to choose the type of problems to exclude from the recommendations.
- If you select Don't exclude solved problems, all problems will be included in the recommendations.
- The number on the right allows you to select the number of recommendations to display on the screen.
- By selecting the checkbox next to the problem title, you can create a virtual contest with the selected problems.
Virtual Contest
A virtual contest is a simulated contest where you can choose the problems you want to solve and set the time limit freely.
Preparations for Participation
First, log in with your GitHub account from the Login button at the top right. (If you do not have a GitHub account, please create one.) Then, enter and save your AtCoder ID.
Creating a Virtual Contest
- Click Virtual Contests at the top right to open the virtual contest page.
- Click
Create New Contestto go to the contest creation page. - Follow the instructions on the page to specify the date, time, and problems, and finally click
Create Contestto complete the contest creation.
- Tips for Creating a Virtual Contest
- Bacha Gacha
- This feature randomly selects problems when you specify a range of difficulty.
- If you enter the AtCoder IDs of expected participants in the Expected Participants field and specify Exclude ~~~, problems that participants have already solved will be excluded. This is recommended to ensure fairness.
- Mode
- There are three types: Normal, Lockout, and Training.
- Normal is the standard mode. Participants are ranked based on their total score and penalties.
- In Lockout mode, only the first person to solve each problem gets the points.
- In Training mode, the scoreboard display is simplified. This mode is recommended when there are many problems. Participants are ranked based on the total number of problems solved and the time of the last correct submission.
- Bacha Gacha
Participating in a Virtual Contest
- Click Virtual Contests at the top right to open the virtual contest page.
Select the contest you want to participate in from Running Contests or Upcoming Contests. Click
Jointo complete the registration. - The problems will be displayed when the contest starts.
- After getting AC on AtCoder, the standings on the virtual contest will be updated a few minutes later.
Others
Glossary
-
Difficulty
- This value indicates that a person with the current internal rating (unadjusted rating) would have a 50% chance of solving the problem in a contest.
- There are problems with a test tube emoji (🧪) next to the estimated difficulty. This indicates that the difficulty was estimated using somewhat forceful methods for problems before the official rating system was introduced.
- A problem with a Difficulty of X means "half of the people with a rating of X can solve this problem," not "everyone with a rating of X can solve this problem."
-
Streak
- The number of consecutive days you have solved new problems that you haven't solved before.
- Longest Streak is calculated based on JST, while Current Streak is calculated based on Local Time.
- Solving a problem that you have solved before will not increase the Streak count.
References
The following web pages were referenced in creating this user guide.
- https://ntk-ta01.hatenablog.com/entry/2020/04/15/001405
- https://trap.jp/post/992/
- https://pepsin-amylase.hatenablog.com/entry/atcoder-problems-difficulty
Creating a Problem List
You can create your own problem list for review and other purposes.
How to Use
- Log in from the Login button at the top right and enter your AtCoder ID to save it.
- After logging in, the My Lists tab will appear in the menu. Click Create New List to enter the edit screen.
- Click Add, and a prompt saying Search here to add problems will appear. Enter the title of the problem you want to add to the list and select the problem.
- To delete a problem, click Remove.
Reset Progress
You can set already AC problems to be treated as if they have not been AC yet.
How to Use
- Log in with your GitHub account from the Login button at the top right, then enter and save your AtCoder ID.
- After logging in, the Reset Progress tab will appear in the menu. Specify the problem, and your progress will be reset.
For Developers / Contribution
This page provides an overview of the contents of AtCoder Problems and details about contributions.
Components of AtCoder Problems
An explanation of the components within AtCoder Problems.
Crawler (Rust)
- Submission Crawler
- Contest and Problem Crawler
API Server (Rust)
Frontend (TypeScript)
Aggregation Batch (Rust)
- Differential Aggregation
- Total Submission Aggregation