002 アルゴリズム的思考が身につく!プログラミングコンテストAtCoder入門
#004_002_002 アルゴリズム的思考が身につく!プログラミングコンテストAtCoder入門(2022)
■目次
監修者のことば
まえがき
本書の進め方
第1章 AtCoderとは
第2章 AtCoderの始め方
第3章 初級編~ここからスタート!~
第4章 中級編~典型を徹底マスター~
第5章 計算量
第6章 上級編~本格的なアルゴリズムの世界へ~
レベルアップのためのガイドブック
あとがき
コラム
■第2章 AtCoderの始め方
本章ではAtCoderへのゆーざ登録から課題の提出手順などに慣れるための内容が記載されている。レビューも書籍販売促進の一環を兼ねているためここでは各項(又は節)にて記載のあるリンクと簡易的なタイトル又は説明のみ貼り付けておく。または以下のリンクで手順を追うといいだろう。
◆2-1 AtCoderへのユーザ登録
①AtCoderサイト
②新規登録
◆2-2 チュートリアル、提出方法の確認
①コンテストHome
②チュートリアル
③問題を解いてプログラムを提出する方法
④問題(各言語ごとの模範解答が下にスクロールするとすでに表示)
https://atcoder.jp/contests/practice/tasks
⑤提出→言語の選択→ソースコードの入力
⑥提出結果
コンテスト上で表示されるタブ一例と手順
提出結果の表示一覧(左から結果(略称)/正式名称/意味)
AC Accepted 正答
WA Wrong Answer 誤答
CE Compile Error コンパイルエラー
TLE Time Limit Exceeded プログラム実行の指定制限時間オーバー
MLE Memory Limit Exceeded プログラム実行時のメモリ制限オーバー
RE Runtime Error プログラム実行中のエラー発生
OLE Output Limit Exceeded 出力サイズの制限オーバー
IE Internal Error 内部エラー(ジャッジシステムのエラー)
※問題を解いていくうちに表示内容には慣れてくる。
◆2-3 コードテスト
前節で紹介したタブのうち、「コードテスト」タブでは提出したソースコードと標準入力を該当欄に入力することで標準出力欄と標準エラー出力欄に結果を表示することができる。
◆2-4 AtCoder登録後に解く問題
前節までがコンテストに参加するためのユーザ登録と参加時のプログラムの提出方法についての説明。
過去問を探す手段として有志メンバーによるWebサービスが3,000問以上もの過去問が整理されており見やすくなっている。
初心者向けの問題
初心者向けコンテスト ABC
https://atcoder.jp/contests/archive?ratedType=1&category=0&keyword=
競プロ典型90問
https://atcoder.jp/contests/typical90
◆2-5 ABC(AtCoder Beginner Contest)
定期的に開催されている初心者向けコンテスト。
第245回を本書では解説しているが、目標としているレベルは100点~400点台に絞って解説している。後半は最上級プレーヤーでも解けるかどうかの難易度の問題もあるため、100点問題から徐々に積み上げていくことを本書では推奨されている。
◆2-6 競プロ典型90問
前節のABC問題を解くのに必要な知識やテクニックを効率よく身につけられるように作られた問題集。典型的な問題を90問収録しており、各問題の難易度を★2から★7で評価している。(実際のHP上では★1~★7と記載)
難易度 高
★3 本書6章上級編で紹介する問題と同等
★2 本書5章中級編で紹介する問題と同等
難易度 低
※ABCの出題範囲を網羅することを意識して作られた問題集とのこと。
◆2-7 プログラミング言語C++自体を学びたい方に:APG4b
これは最近知り合ったKさんという方に教えていただいたページであるが、初めてAtCoderに参加する際に彼はここから始めたとのこと。
本書においても「アルゴリズムの実装に特化したC++の教材」とされており、コンテストで良い成績を目指す近道として紹介されている。
◆4章構成
第1章:基本文法
第2章:複雑な計算処理の書き方
第3章:今日日プログラミングに役立つ知識
第4章:今まで説明していなかったこと
◆第1章までを学習
①基本的な文法事項を一通り押さえられる
②ABCのB問題(200点問題)を解くのに十分な基礎が身につく
◆第2章までを学習
以下のような複雑な処理を実装できるようになる
①多重ループ
②参照
③再帰関数
■総評
第2章までは問題を解き始める前の事前知識の紹介となっている。
AtCoderではWeb上でプログラムを提出する、コードチェックを行うための環境が整っているため、自身のWin機やMac機で環境設定を行う際の苦労がない分参入の敷居はほぼ取り除かれているといってよい。
特にC言語で開発する場合GCCといったコンパイラを設定する際に少し苦労した分このあたりの理解を一旦C言語本を一冊通して行ってからAtCoderに参加するのもよいだろう。本書では、Python3とC++で説明しているが、実際に提出可能な言語はかなり多い(以下リンクのルール頁を参照)。それがAtCoderの魅力ともいえる。
42TokyoのPiscineを受けるか検討される方は、まずC言語本を1冊と次にまとめる予定の本書第3章の初級編(ABC:B問題まで)を一通り回しておくことをおススメしたい。これらをやって分からないことが多い場合、基礎知識が足りないという認識を持っておくと実際に1カ月に及ぶ試験に参加する際に時間を無駄にすることなく事前準備を行うことが出来るとみている。