Submit Search
Upload
競技プログラミングの楽しみ
•
3 likes
•
12,524 views
N
na_o_ys
Follow
競技プログラミングについての社内LT資料(public版)
Read less
Read more
Science
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
計算量
計算量
Ken Ogura
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
プログラマ脳を鍛える会 Vol2α
プログラマ脳を鍛える会 Vol2α
har hogefoo
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
Kazuma Mikami
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
RUPC2014_Day2_I
RUPC2014_Day2_I
s1190048
Recommended
計算量
計算量
Ken Ogura
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
プログラマ脳を鍛える会 Vol2α
プログラマ脳を鍛える会 Vol2α
har hogefoo
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
Kazuma Mikami
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
RUPC2014_Day2_I
RUPC2014_Day2_I
s1190048
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
Kazuma Mikami
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
abc031
abc031
AtCoder Inc.
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
AtCoder Inc.
arc047
arc047
AtCoder Inc.
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
AtCoder Inc.
Sengoku
Sengoku
Hirotaka Isa
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
Kth
Kth
oupc
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
AtCoder Regular Contest 017
AtCoder Regular Contest 017
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Inc.
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.
Arc041
Arc041
AtCoder Inc.
Coursera "Neural Networks"
Coursera "Neural Networks"
hayashizaki takaaki
Trianguler
Trianguler
Ken Ogura
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
AtCoder Inc.
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
K070k80 点推定 区間推定
K070k80 点推定 区間推定
t2tarumi
More Related Content
What's hot
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
Kazuma Mikami
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
abc031
abc031
AtCoder Inc.
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
AtCoder Inc.
arc047
arc047
AtCoder Inc.
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
AtCoder Inc.
Sengoku
Sengoku
Hirotaka Isa
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
Kth
Kth
oupc
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
AtCoder Regular Contest 017
AtCoder Regular Contest 017
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Inc.
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.
Arc041
Arc041
AtCoder Inc.
Coursera "Neural Networks"
Coursera "Neural Networks"
hayashizaki takaaki
Trianguler
Trianguler
Ken Ogura
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
AtCoder Inc.
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
What's hot
(20)
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
abc031
abc031
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
arc047
arc047
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
Sengoku
Sengoku
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
Kth
Kth
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Regular Contest 017
AtCoder Regular Contest 017
abc027
abc027
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Arc041
Arc041
Coursera "Neural Networks"
Coursera "Neural Networks"
Trianguler
Trianguler
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
Similar to 競技プログラミングの楽しみ
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
K070k80 点推定 区間推定
K070k80 点推定 区間推定
t2tarumi
How to study stat
How to study stat
Ak Ok
130323 slide all
130323 slide all
ikea0064
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Inc.
Programming Haskell Chapter 11 切符番号選び
Programming Haskell Chapter 11 切符番号選び
dekosuke
Similar to 競技プログラミングの楽しみ
(6)
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
K070k80 点推定 区間推定
K070k80 点推定 区間推定
How to study stat
How to study stat
130323 slide all
130323 slide all
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
Programming Haskell Chapter 11 切符番号選び
Programming Haskell Chapter 11 切符番号選び
競技プログラミングの楽しみ
1.
競技プログラミングの楽しみ エンジニア @na_o_ys
2.
自己紹介 • 大阪出身
25 歳 • 大学院では暗号理論を研究 • 新卒入社の SIer から逃げ出して、弊社に入社 • 趣味:競技プログラミング
3.
問題1. Pair of
Primes 入力として整数 N (N <= 10000) が与えられる。 1 から N までの数字を昇順, 降順に並べる。 1 2 3 4 5 6 7 8 9 ... N N ... 9 8 7 6 5 4 3 2 1 上下のペアのうち両方が 素数 であるものの個数を 出力せよ。 ※実行時間 1 秒以内
4.
N = 9
の場合 • 答えは 3 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
5.
方針 N の最大値は
10000 1. 10000 以下の素数リストを生成する 2. (1, N), (2, N-1), (3, N-2), ... が素数リストに含まれるか どうか確かめる 3. 個数を出力
6.
実装してみます
7.
競技プログラミングの楽しみ その1 実装・提出して
Accept されると気持ち良い
8.
ポイント 実行時間に関して •
1 秒で実行できるループ回数(計算量) : 108 回くらい – C++ の場合 • 試し割りで素数表を作る計算量: O(N√N) – 今回は N の最大値は 104 – N√N = 106 回程度のループで済む
9.
ポイント もし N
の最大値が 106 だったら…? • 試し割りでは間に合わない ( N√N = 109 ) • もっと高級なアルゴリズムを実装しなきゃいけない – e.g. エラトステネスのふるい
10.
競技プログラミングの楽しみ その2 問題の制約から,
適切なアルゴリズムを選択する
11.
問題2. Sum equals
N 長さ 106 の整数配列 M = { m1, m2, m3, ..., m106 } と, 整数 N が与えられる。 M の要素から 2 つ選ぶとき、和が N になる組み合わせは 存在するか? 存在するなら “OK”, しないなら “NO” と出力せよ。 ※実行時間 1 秒以内
12.
全通り試す場合 • 1
つ目の選び方は 106 通り, 2 つ目も 106 通り • ループ回数は 106 * 106 = 1012 • 1 秒じゃ終わらない
13.
工夫 • 1
つ目の値を固定してみる – 1 つ目の値が a ならば, 2 つ目は N ‒ a – 配列 M をソートしておけば, N ‒ a が配列 M に存在 するかどうか, 二分探索で効率的に調べれられる • 1 つ目の値についてのみ全通り試せば良い • 計算量は 106 * log 106 ≒ 107 • 間に合う!
14.
競技プログラミングの楽しみ その3 工夫して制約条件を突破する!
15.
競技プログラミングは役に立つ 1. 計算量の見積もりが効くようになる
– ボトルネック以外を効率化しても無意味という実感 2. 複雑なロジックの実装力が上がる – たまにある複雑なデータ抽出処理とか 3. 複雑なロジックの読解力が上がる – 競技プログラミングでは他人のコードを読む機会が多い
16.
競技プログラミングは 楽しいだけじゃなくて役に立つ 今すぐ参加だ!
17.
コンテスト Web上で定期的に大会が開催されている TopCoder
Codeforces AtCoder 一番メジャー 最近人気 問題が日本語 月3回開催 月5回開催 不定期開催 • 1~2 時間で 3~6 個の問題を解く • 早く解くほど高得点 • 結果によってレーティングが変化する
18.
TopCoderのレーティング分布 人数 レーティング
19.
レーティング履歴も見られる
20.
まとめ • 競技プログラミングは楽しい
• 競技プログラミングは役に立つ • コンテストが結構頻繁に開かれる 興味が湧いた方は… – ブログやってます: http://na-o-s.hateblo.jp/ 面白かった問題の解説とか – 有志によるコンテストカレンダー: http://topcoder.g.hatena.ne.jp/
21.
ご清聴ありがとうございました
Download now