けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCodeer 本を書きました!

こんばんは!!! けんちょんです!

新しく本を出させていただくことになりましたので、報告いたします。

この本は次の Qiita の記事を単行本化したものです。

qiita.com

今度はどんなコンセプトで、どんな内容で、どんなターゲット層を想定した本なのかについて、簡単に紹介します。

1. 本書のコンセプト

今回の本は、


  • AtCoder何も知らない方が入門できる!
  • AtCoder布教したい方が「とりあえずこれ読めばいいよ」と言える!
  • C++Python両言語で入門できる!

ことを目指した AtCoder の入門本です。おそらく、史上最も易しい競プロ本です。

Python で競プロしている方が C++ に乗り換えるキッカケになったり、C++ で競プロしている方が Python に乗り換えるキッカケになったりすることも狙っています。

 

位置付け 内容
1 章・2 章 AtCoder の紹介・チュートリアル
3 章 初級編 文法確認
4 章 計算量
5 章 中級編 ABC C 問題の徹底対策
6 章 上級編 アルゴリズム入門

 

 

これから、より詳しい内容を紹介していきます。

 

2. 初級編 〜 ここからスタート!

今まで競プロ本では、文法解説レベルから解説したものはほとんどありませんでした。

AtCodeer 本では文法の確認からやっていきます。文法を網羅的に解説することまではできませんが、例題を解き進めていくうちに自然に文法を習得できるように構成しました。

また、C++Python の両方で解説したこともポイントです。一方の言語で十分に競プロに習熟している方でも、他方の言語に入門する練習もできるでしょう。

例題は、AtCoder を始める方向けの問題集「AtCoder Beginners Selection」に選んだ問題たちを中心に解説しています。これによって、ABC の A 問題、B 問題を解き切る力が身につくはずです!

 

4. 中級編 〜 典型を徹底マスター!

中級編が本書の大きな特徴です。

ABC の C 問題というのは、文法確認レベルの問題よりは難しく、特定のアルゴリズムが必要になるほど専門的な知識は不要な問題たちです。しかし、愚直な解法は通用しなかったり、独特な発想が必要だったり、数学的考察が必要となったりします。

そのような問題は「こういう問題はこうやって解く」という体系化が困難です。その困難さに本書は真っ向から挑戦しました!!!

たとえば、


  • 全探索の勘所を掴んだり
  • バケット連想配列を有効活用したり
  • ランレングス圧縮などといった地味に実装が難しい問題を徹底解説したり
  • 「周期性」「パリティ」「言い換え」「ペアリング」などの数学的考察を体系化したり

しています。各節の練習問題まで演習すれば、ほとんどの ABC の C 問題は解けるようになるでしょう!

 

5. 上級編 〜 本格的なアルゴリズムの世界へ!

中級編までやり込めば、もう十分に AtCoder のコンテストに自信を持って取り組めるでしょう!

上級編では、いよいよ「〜法」と名前が付いているような本格的なアルゴリズムを学んでいきます。具体的には



を学びます。本書を終えた頃には、今後あらゆるアルゴリズムを学ぶのに十分な思考力が身についているはずです!

 

6. おわりに

今まで Qiita やこのブログで、さまざまな記事を書いてきました。今回の本は、それらの集大成と言えるものです (もちろんこれからも書きます)。僕がこれまで AtCoder の布教活動や解説活動をして来たのは、競プロという世界を知ることで人生が切り開かれて幸せになれる人がたくさんいるはずで、その方々がこの世界を知れるキッカケを作りたいという想いからでした。

最近は AtCoder に入門するための有益な情報がたくさん発信されるようになって来ました。そんな時代だからこそ、これから AtCoder を始めたい方々のための情報を一冊の本にまとめあげることには大きな意義があると考えました。

誰もが、それぞれの人生にとって有益な情報に触れられる世界を目指すキッカケになったならば、とても嬉しいです。