競技プログラミングを始めよう!
自己紹介
 HN:Bantako
 学科、学年:AJ B3
 趣味:競プロ
(→はAtCoderのRating)
Twitter:@__bactpus__
競技プログラミングって何?
 競技プログラミング(英語: Competitive programming、略称: 競プロ)
とは、プログラミングコンテストで行われる競技の一種である。
 競技プログラミングでは、参加者全員に同一の課題が出題され、より早
く与えられた要求を満足するプログラムを正確に記述することを競う。
コンピュータサイエンスや数学の知識を必要とする問題が多く、新卒学
生の採用活動などに使われることもある。多くのコンテストでオンライ
ンジャッジが採用されている。
 また、競技プログラミングに参加する人を「競技プログラマ」または
「競プロer」と呼ぶことがある。(wikipediaより)
 国内で行われる主なコンテストは以下の3つである
 AtCoder
 yukicoder
 日本情報オリンピック(Japanese Olympiad in Informatics(JOI))
 また国際規模では以下のものが定期的に開催されている
競プロはネトゲ!
競プロ = ネトゲ !?
競技プログラミング ネトゲ
PCの使用 ○ ○
オンライン ○ ○
プレイヤーの能力により
差がつく
○ △
真面目に競プロの解説
AtCoderさんからお借りしました(https://twitter.com/chokudai/status/1016244862344036352)
競技プログラミングって何が面白いの?
 オンラインで世界中の人と対戦できる
 コンテストでライバルと知力の殴り合いができる
 やっぱりネトゲでは?
 解けない問題が解けるようになる
 知識が増えて見える世界が広がる
実際にどんな問題がでるの?
 いろんな分野から(それなりに)幅広く出題される
 算数・数列・数論・幾何学・グラフ・文字列etc..
 足し算するだけの問題から
高度な数学の知識を使う問題など難易度の幅が大きい
例題
 ポケモン金銀より「こおりのぬけみち」
 滑るフィールド上でスタートからゴールまで
最短何手で進めるか
 プレイヤーは上下左右の4方向に進める
 一度移動したら障害物にぶつかるまで進み続
ける
解き方を考えてみる(1)
 とりあえずいろんな方向に移動すればいつか
たどり着ける・・・はず!
 最悪無限ループする
 同じ場所通らなければ無限ループしないん
じゃないの?
 最短手数を求めるのは難しい
(現在のPCの性能でも膨大な時間がかかる場
合がある)
解き方を考えてみる(2)
 同じ場所はたかだか1回通る
 ある場所において、一番短い手数だけわかれ
ば良い
 じゃあ並列にシミュレーションしてみる
と・・・?
解き方を考えてみる(2)
12
3
34 4
4
0
4
5
5
5
6
6
66
7 7
7
7
7
7
78 8
8
9
9
9
9
10
10
11
11
11
1212
競プロのおもしろさ
 そのままでは解けない問題を工夫して解く のがめちゃくちゃ楽しい
 数学的知識、アルゴリズムの工夫、天から解法が降ってくる..etc
 290億年→数秒になった例
『フカシギの数え方』
実は競プロって難しいんじゃ・・・
 簡単な問題は本当に簡単です
実は競プロって難しいんじゃ・・・
擬似コード的ななにか C言語
競技プログラミングってどこでやるの?
 国内のオンラインプログラミングコンテストサイト
 AtCoder(土/日の21時頃)
 yukicoder(金の21時頃)
 ICPC(年に1回)
 JOI(年に1回 高校生のみ)
 国外のコンテストサイト
 Codeforces
 TopCoder
 CODECHEF
AtCoder.jpにアクセス!
まとめ
 競プロ楽しい!!✌(‘ω’✌ )三✌(‘ω’)✌三( ✌‘ω’)✌
 競プロはネトゲ!
 競プロ難しくないよ!
 今日21時からAtCoderでコンテスト!!!!!

競技プログラミングを始めよう!