iTranslated by AI
Analyzing 2,818 AtCoder Problems with GPT-5.5 to Systematize Competitive Programming Techniques

Abstract
- From 2,818 AtCoder ABC problems, I have organized the thinking process for solving problems into a system of 112 norms across 16 chapters.
- I used GPT-5.5 to map the flow leading to each problem's solution as a DAG (Directed Acyclic Graph) and extracted common techniques.
- I created this because I wanted a collection of "thinking attitudes" rather than just a list of algorithm or data structure names.
- URL: https://ohatakenji.github.io/atcoder-techniques/
Background
I tried AtCoder a few years ago, but I quit shortly after because just memorizing algorithms wasn't enough to solve the problems, and I found it too difficult.
However, thanks to the recent development of AI (I will refer to LLMs and related technologies as "AI" in this article), AI can now solve competitive programming problems with reasonable accuracy.
Therefore, I decided to have AI solve AtCoder problems and verbalize the process to see if I could systemize the necessary techniques.
What I Built
URL: https://ohatakenji.github.io/atcoder-techniques/

It is broadly divided into three parts: Norms, Techniques, and Problems.
Norms
This summarizes the "thinking attitudes" required when solving problems. It outlines the options available when you encounter certain situations. You can think of these as techniques grouped by situation.
Example: https://ohatakenji.github.io/atcoder-techniques/chapters/count-by-kind/

Techniques
This section covers common techniques used when solving problems.
Example: https://ohatakenji.github.io/atcoder-techniques/tesuji/use_monotone_boundary.html

Problems
For each problem, I have summarized how to come up with the solution as a DAG.
Example: https://ohatakenji.github.io/atcoder-techniques/contests/abc312/tasks/abc312_c
By the way, you can switch between the problem statement and the analysis DAG by replacing the host part of the URL between atcoder.jp and ohatakenji.github.io/atcoder-techniques/.

The Creation Process
I organized the system of techniques through a pipeline roughly like the one shown below.
1. Analyzing the process of solving each problem as a DAG
I had the AI write out the flow leading to the solution for each problem as a DAG. Nodes are the main points where reasoning progresses, and edges contain information about the transition to that point and its difficulty.

I used 2,818 problems from ABC001 to ABC456. This seemed like an appropriate source for extracting a system of techniques.
The problems are designed to cover the knowledge required throughout the ABC series.
2. Extracting "Techniques" from the DAGs
Once the analysis into DAG format for all problems was complete, I extracted common approaches as "Techniques."
3. Organizing into "Norms" as Situation -> Candidate Techniques
I grouped the extracted techniques by situation. The goal is to make it easier to think about what to consider when you encounter a specific situation.
At this stage, I was able to compile them into 112 norms.
4. Grouping related "Norms" into "Chapters"
Since 112 norms would be too many to list flatly on a website, I reorganized related norms into chapters. As a result, they were organized into 16 chapters and 112 norms.
I used Codex for the creation process, consuming nearly two weekly limits of the $100/month plan.
Conclusion
I have organized the thinking process for solving AtCoder ABC problems into a system of 112 norms across 16 chapters based on 2,818 problems. By summarizing these previously difficult-to-articulate "thinking attitudes," I feel that the overwhelming nature of learning competitive programming has been reduced.
By the way, I am very interested in the potential of using AI to aggressively transform and synthesize raw data. In this project, I worked on this underlying theme by building a system from AtCoder problem sets, and I believe I was able to successfully summarize a relatively abstract concept—from problems to a system of reasoning—in a good way.
Discussion