Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
na_o_ys
PDF, PPTX
12,551 views
競技プログラミングの楽しみ
競技プログラミングについての社内LT資料(public版)
Science
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
10
/ 21
11
/ 21
12
/ 21
13
/ 21
14
/ 21
15
/ 21
16
/ 21
17
/ 21
18
/ 21
19
/ 21
20
/ 21
21
/ 21
More Related Content
PDF
計算量
by
Ken Ogura
PDF
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
PDF
プログラマ脳を鍛える会 Vol2α
by
har hogefoo
PDF
K2PC Div1 E 暗号化
by
Kazuma Mikami
PDF
AtCoder Regular Contest 046
by
AtCoder Inc.
PDF
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
PDF
RUPC2014_Day2_I
by
s1190048
計算量
by
Ken Ogura
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
プログラマ脳を鍛える会 Vol2α
by
har hogefoo
K2PC Div1 E 暗号化
by
Kazuma Mikami
AtCoder Regular Contest 046
by
AtCoder Inc.
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
RUPC2014_Day2_I
by
s1190048
What's hot
ODP
情報オリンピック夏合宿発表
by
Kazuma Mikami
PDF
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
PDF
abc031
by
AtCoder Inc.
PDF
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
PDF
arc047
by
AtCoder Inc.
PDF
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
PPTX
Sengoku
by
Hirotaka Isa
PDF
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
PDF
Kth
by
oupc
PDF
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 017
by
AtCoder Inc.
PDF
abc027
by
AtCoder Inc.
PDF
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
PDF
Arc041
by
AtCoder Inc.
PPTX
Coursera "Neural Networks"
by
hayashizaki takaaki
PDF
Trianguler
by
Ken Ogura
PDF
AtCoder Regular Contest 019 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
情報オリンピック夏合宿発表
by
Kazuma Mikami
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
abc031
by
AtCoder Inc.
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
arc047
by
AtCoder Inc.
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
Sengoku
by
Hirotaka Isa
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
Kth
by
oupc
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
AtCoder Regular Contest 017
by
AtCoder Inc.
abc027
by
AtCoder Inc.
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
Arc041
by
AtCoder Inc.
Coursera "Neural Networks"
by
hayashizaki takaaki
Trianguler
by
Ken Ogura
AtCoder Regular Contest 019 解説
by
AtCoder Inc.
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
Similar to 競技プログラミングの楽しみ
PDF
Pythonではじめる競技プログラミング
by
cocodrips
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PDF
Rustで始める競技プログラミング
by
Naoya Okanami
PDF
Divisor
by
oupc
PPTX
第1回 競技プログラミング勉強会 組み合わせ問題に強くなろう
by
SayaOzaki
PDF
勉強か?趣味か?人生か?―プログラミングコンテストとは
by
Takuya Akiba
PDF
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
PPTX
20160620 競技プログラミングのすゝめ
by
Yoshiki TAKADA
PDF
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
PDF
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
PDF
Indeedなう 予選B 解説
by
AtCoder Inc.
PDF
130323 slide all
by
ikea0064
PDF
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
PDF
Comment
by
oupc
PDF
Introduction to programming competition [revised][PDF]
by
yak1ex
PDF
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
PDF
導入
by
Ryunosuke Iwai
Pythonではじめる競技プログラミング
by
cocodrips
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
Rustで始める競技プログラミング
by
Naoya Okanami
Divisor
by
oupc
第1回 競技プログラミング勉強会 組み合わせ問題に強くなろう
by
SayaOzaki
勉強か?趣味か?人生か?―プログラミングコンテストとは
by
Takuya Akiba
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
20160620 競技プログラミングのすゝめ
by
Yoshiki TAKADA
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
Indeedなう 予選B 解説
by
AtCoder Inc.
130323 slide all
by
ikea0064
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
Comment
by
oupc
Introduction to programming competition [revised][PDF]
by
yak1ex
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
導入
by
Ryunosuke Iwai
競技プログラミングの楽しみ
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