Slide 1

Slide 1 text

競技プログラミング入門 やってみようぜ!

Slide 2

Slide 2 text

はじめに ● 競技プログラミング ○ たまに聞くことがある ○ 聞いたことはやったことはない ● 楽しいのでやってみよう!っていう会です

Slide 3

Slide 3 text

流れ ● 競技プログラミングとは ● コンテストをやってみよう ● 解説 ● おわり

Slide 4

Slide 4 text

競技プログラミングとは

Slide 5

Slide 5 text

競技プログラミングとは ● プログラミングコンテストの一種 ● 問題をプログラムを書いて解くこと ● 速く問題を解くほど点数が高い

Slide 6

Slide 6 text

競技プログラミングの良いところ ● 計算量を意識するようになる ● 正確に書く力が身に付く ● アルゴリズムの勉強になる

Slide 7

Slide 7 text

計算量を意識するようになる ● 問題の処理時間に制限があります ○ だいたい2秒とか ● 制限内で解けないとペナルティがありまーす ○ 計算量がわからないと、提出しにくい ○ ペナルティで点数下げたくない… ● 覚えるしかないよなぁ?

Slide 8

Slide 8 text

速く正確に書く力が身に付く ● 間違えるとペナルティ ○ 速く解くとボーナス ● 速く間違えずに解くのがベスト ○ 脳内デバック力が求められている

Slide 9

Slide 9 text

アルゴリズムの勉強になる ● 問題に時間の制限がある ○ 組み合わせを一個ずつ確認はできない ● 参加しているうちにアルゴリズムと出会う ○ 解答見たり、聞いたりするとね ○ 自然に覚える

Slide 10

Slide 10 text

競技プログラミングをやるには ● AtCoder ● TopCoder ● Codeforces

Slide 11

Slide 11 text

やっぱりAtCoderだね! ● みんな大好き!日本語! ● 初心者向けのコンテストがやってるよ! ○ だいたい週1で開催! ○ AtCoder Beginner Contest(ABC) ● 解説動画や資料もあるよ!

Slide 12

Slide 12 text

初心者向けコンテストの難易度 ● A問題 ○ 言語が書ける ● B問題 ○ 全探索が書ける ● C問題 ○ アルゴリズムを使って書ける

Slide 13

Slide 13 text

A問題の例題 X, Aは 0以上9以下の整数です。 XがA未満の時0, A以上の時 10を出力してください。 入力: X A 例: 1 4

Slide 14

Slide 14 text

例題の解答 X, A =[int(i) for i in input().split()] print((X >= A) * 10)

Slide 15

Slide 15 text

例題の解答(JS) function main(input) { input = input.split(" "); x = input[0]; a = input[1]; console.log(x < a ? 0 : 10); } main(require("fs").readFileSync("/dev/stdin", "utf8"));

Slide 16

Slide 16 text

最速解答時間はいくつ?

Slide 17

Slide 17 text

はい、最速解答は19秒です

Slide 18

Slide 18 text

競技プログラミングを完全に理解した PythonBeginners沖縄 22 https://github.com/bouch20/PyBeg i_Okinawa22

Slide 19

Slide 19 text

さっそくやってみよう! -コンテストに参加してみよう-

Slide 20

Slide 20 text

じゃけん、AtCoder登録しましょうねー https://atcoder.jp

Slide 21

Slide 21 text

AtCoder登録しましょうねー

Slide 22

Slide 22 text

バーチャルコンテストでやります ● 非公式サービス ● 過去問でコンテストが開ける

Slide 23

Slide 23 text

ということで登録しましょう https://not-522.appspot.com/

Slide 24

Slide 24 text

ということで登録しましょう

Slide 25

Slide 25 text

コンテストページにアクセス コンテストに参加しませう https://not-522.appspot.com/contest/5148318244012032

Slide 26

Slide 26 text

問題解くんご 問題一覧と順位が表示されるよ Roundingを解くべし

Slide 27

Slide 27 text

問題ページだよ

Slide 28

Slide 28 text

下にコード提出用フォームあるよ

Slide 29

Slide 29 text

下にコード提出用フォームあるよ 言語選ぶ

Slide 30

Slide 30 text

下にコード提出用フォームあるよ コード書く(貼る)

Slide 31

Slide 31 text

下にコード提出用フォームあるよ 提出だー!

Slide 32

Slide 32 text

え、実行確認したい? こ↑こ↓

Slide 33

Slide 33 text

あとは提出時とだいたい同じ テストしたい入力いれる 下の方に出力フォームと実行ボタンあるデス

Slide 34

Slide 34 text

提出一覧だよ

Slide 35

Slide 35 text

提出結果だよ AC: 正解 WA: 不正解 TLE: 実行時間超過

Slide 36

Slide 36 text

提出したらこうなる

Slide 37

Slide 37 text

ではやってみましょう

Slide 38

Slide 38 text

解説

Slide 39

Slide 39 text

次のAtCoder Beginner Contest 132
 6月29日 21時に開催!!
 AtCoder Beginner Contest 132