Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Pythonではじめる 
競技プログラミング
@cocodrips
競技プログラミングって 
聞いたことありますか?
競技プログラミング 
参加したことありますか? 
(TopCoder, ICPCなど)
問題 
9 
10 以下の整数をもつ、長さNの4つの配列A, B, C, Dが 
ある。各配列から1つずつ要素を選び、それらの総和が 
0になるパターン数を答えよ。(1≦N≦20) 
時間制限:2秒, スタック・メモリ制限:256MB 
! 
...
単純な解法 (全探索) 
全てのパターンを試して条件にあったらカウントしていく
問題2 
9 
10 以下の整数をもつ、長さNの4つの配列A, B, C, Dが 
ある。各配列から1つずつ要素を選び、それらの総和が 
0になるパターン数を答えよ。(1≦N≦200) 
時間制限:2秒, スタック・メモリ制限:256MB 
!...
さっきと同じ方法で解くと・・・
さっきと同じ方法で解くと・・・ 
不正解_(:3 」∠)_
さっきと同じ方法で解くと・・・ 
不正解_(:3 」∠)_ 
109以下の整数をもつ、長さNの4つの配列A, B, C, Dが 
ある。各配列から1つずつ要素を選び、それらの総和が 
0になるパターン数を答えよ。(1≦N≦200) 
! 
時間...
ちょっと工夫した解法 
Ai + Bj + Ck + Dl = 0
ちょっと工夫した解法 
Ai + Bj + Ck + Dl = 0 
Ai + Bj = - (Ck + Dl)
競技プログラミングとは 
与えられた問題に対して 
解く早さと正確さを競う競技 
コンテスト: ICPC, Google Code Jam, TopCoder(SRM), 
CodeForces, AtCoder 等
基本的なルール 
1. 制限時間内に3~10問位の問題を解く 
2. 速く解くほど点数が高い 
3. 順位に応じてレーティングが変化する 
レーティングに応じて、 
ランク分けがされたり
競技プログラミングの良い所
競技プログラミングの良い所 
1 プログラミングで人と競争できる!青春! 
自分の実力・成長がTOEICみたいに数値化される
競技プログラミングの良い所 
1 
プログラミングで人と競争できる!青春! 
自分の実力・成長がTOEICみたいに数値化される 
2 計算量を瞬時に見積もれるようになる 
どれくらいまでが時間内に動作するかがわかる 
3 同じ問題の他人の解き方...
競技プログラミングで 
Pythonを使うと便利!! 
• オーバーフローを気にしなくていい!!!!!! 
何百桁でも怖くない☆(ゝω・)v 
1 
• デバッグが楽 
2 
• 便利標準ライブラリがたくさん 
(itertools・colle...
TopCoder Codeforces AtCoder 
開催頻度月3回月6回毎週土曜日 
問題文英語英語日本語 
問題数と時間3問/75分5問/120分4問/90分 
PythonのVersion 2 2, 3 2, 3 
解ける人数 
(%...
Upcoming SlideShare
Loading in …5
×

Pythonではじめる競技プログラミング

16,398 views

Published on

PyCon JP 2014のLTで発表した資料です( o・ω・)ノ

Published in: Technology
  • Be the first to comment

Pythonではじめる競技プログラミング

  1. 1. Pythonではじめる 競技プログラミング
  2. 2. @cocodrips
  3. 3. 競技プログラミングって 聞いたことありますか?
  4. 4. 競技プログラミング 参加したことありますか? (TopCoder, ICPCなど)
  5. 5. 問題 9 10 以下の整数をもつ、長さNの4つの配列A, B, C, Dが ある。各配列から1つずつ要素を選び、それらの総和が 0になるパターン数を答えよ。(1≦N≦20) 時間制限:2秒, スタック・メモリ制限:256MB ! 例 A = [1, 2, 3, 4, 5] B = [-1, -2, -3, -4, -5] C = [2, 4, 6, 8, 10] D = [0, -3, -6, -9] 1 + (-3) + 8 + (-6) = 0
  6. 6. 単純な解法 (全探索) 全てのパターンを試して条件にあったらカウントしていく
  7. 7. 問題2 9 10 以下の整数をもつ、長さNの4つの配列A, B, C, Dが ある。各配列から1つずつ要素を選び、それらの総和が 0になるパターン数を答えよ。(1≦N≦200) 時間制限:2秒, スタック・メモリ制限:256MB ! 例 A = [1, 2, 3, 4, 5] B = [-1, -2, -3, -4, -5] C = [2, 4, 6, 8, 10] D = [0, -3, -6, -9]
  8. 8. さっきと同じ方法で解くと・・・
  9. 9. さっきと同じ方法で解くと・・・ 不正解_(:3 」∠)_
  10. 10. さっきと同じ方法で解くと・・・ 不正解_(:3 」∠)_ 109以下の整数をもつ、長さNの4つの配列A, B, C, Dが ある。各配列から1つずつ要素を選び、それらの総和が 0になるパターン数を答えよ。(1≦N≦200) ! 時間制限:2秒, スタック・メモリ制限:256MB
  11. 11. ちょっと工夫した解法 Ai + Bj + Ck + Dl = 0
  12. 12. ちょっと工夫した解法 Ai + Bj + Ck + Dl = 0 Ai + Bj = - (Ck + Dl)
  13. 13. 競技プログラミングとは 与えられた問題に対して 解く早さと正確さを競う競技 コンテスト: ICPC, Google Code Jam, TopCoder(SRM), CodeForces, AtCoder 等
  14. 14. 基本的なルール 1. 制限時間内に3~10問位の問題を解く 2. 速く解くほど点数が高い 3. 順位に応じてレーティングが変化する レーティングに応じて、 ランク分けがされたり
  15. 15. 競技プログラミングの良い所
  16. 16. 競技プログラミングの良い所 1 プログラミングで人と競争できる!青春! 自分の実力・成長がTOEICみたいに数値化される
  17. 17. 競技プログラミングの良い所 1 プログラミングで人と競争できる!青春! 自分の実力・成長がTOEICみたいに数値化される 2 計算量を瞬時に見積もれるようになる どれくらいまでが時間内に動作するかがわかる 3 同じ問題の他人の解き方が見られる 4 標準ライブラリや言語仕様に詳しくなる 5 楽しい!
  18. 18. 競技プログラミングで Pythonを使うと便利!! • オーバーフローを気にしなくていい!!!!!! 何百桁でも怖くない☆(ゝω・)v 1 • デバッグが楽 2 • 便利標準ライブラリがたくさん (itertools・collections等) 3
  19. 19. TopCoder Codeforces AtCoder 開催頻度月3回月6回毎週土曜日 問題文英語英語日本語 問題数と時間3問/75分5問/120分4問/90分 PythonのVersion 2 2, 3 2, 3 解ける人数 (%) Topcoder の何色に相当するかDiv2 Div1 Div2 Div1 ABC ARC 100% 1 1 2 2 3 1 4 4 2 1 2 0% 1 2 3 1 2 3 1 2 4 5 2 3 5 4 2 1 3 1 2 3 4 主要なコンテストの紹介初心者に おすすめ 易 難

×