SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
@ ei1333
競技プログラミングについて
目次
競技プログラミングとは
競技プログラミングで得られるもの
何問か解いてみよう
まとめ(宣伝)
2017/1/19 競技プログラミングについて 2
目次
競技プログラミングとは
競技プログラミングで得られるもの
何問か解いてみよう
まとめ(宣伝)
2017/1/19 競技プログラミングについて 3
競技プログラミングとは
2017/1/19 競技プログラミングについて 4
1. ある問題が与えられる
−実行時間やメモリ使用量の上限も同時に与えられる
• 終わらないプログラムはダメ、メモリをたくさん使うプログラムもダメ
2. その問題を解くための手順を考える
3. プログラムとして実装する
競技プログラミングとは
2017/1/19 競技プログラミングについて 5
解き方を
考える
要するに、
実装
目次
競技プログラミングとは
競技プログラミングで得られるもの
何問か解いてみよう
まとめ(宣伝)
2017/1/19 競技プログラミングについて 6
競技プログラミングで得られるもの
プログラミング言語の知識, 実装力
アルゴリズムとデータ構造の知識
数学力
(英語読解力)
(賞品)
(友人)
2017/1/19 競技プログラミングについて 7
プログラミング言語の知識, 実装力
プログラミング言語の知識
−プログラムを記述することにより問題を解く
−C++, Java, C# などのプログラミング言語がオーソドックス
(競技プログラミングに向いている)
実装力
−プログラムをなるべく早く、正確に、何度も実装する
−実装に悩んだりバグを埋め込んだりすることが減る
2017/1/19 競技プログラミングについて 8
アルゴリズムとデータ構造の知識
アルゴリズムとデータ構造の知識
静大から浜松駅への最短経路
2017/1/19 競技プログラミングについて 9
道
交差点
円と多角形の共通部分の面積
1. 円と多角形の交点を求める
2. 複数の三角形に分割
3. 三角形の面積の和を計算
数学力
数学力
−数学や確率、行列などを応用した問題がたびたび出題される
2017/1/19 競技プログラミングについて 10
𝑛(1 ≤ 𝑛 ≤ 1018)番目のフィボナッチ数
1 1 2 3 5 8 13 21 34 55 89 144 …
𝐹𝑛 = 𝐹𝑛−2 + 𝐹𝑛−1: 2 項間漸化式
行列累乗に落とすと 𝑂(log 𝑛)
𝐹𝑛
𝐹𝑛+1
=
0 1
1 1
𝑛
0
1
英語読解力
(英語読解力)
−問題文が英語のものが多く存在
−のちに紹介する ACM-ICPC の公用語が英語
• 任意のアナウンスが英語(何を言っているかわからない)で,
英語でチーム紹介をさせられる…
−他にも何かといろいろな場面で必要です><
2017/1/19 競技プログラミングについて 11
賞品
(賞品)
−コンテストで上位に入ると, Tシャツや賞金がもらえる
• 主に Hacker Rank, Code Chef, オンサイトのコンテスト
• Tシャツはたくさん貰える
• (そもそも上位に入るのが難しい)
2017/1/19 競技プログラミングについて 12
この間のCODE FESTIVAL 2016
で貰ったTシャツです
友人
(友人)
−競技プログラミングをしている人は
Twitter をしている人がほとんど(要出典)
−同じ趣味を持つ人と知り合える
−頭が良い人たちと話せる
−良い刺激になる
2017/1/19 競技プログラミングについて 13
目次
競技プログラミングとは
競技プログラミングで得られるもの
何問か解いてみよう
まとめ(宣伝)
2017/1/19 競技プログラミングについて 14
何問か解いてみよう
実際の競技プログラミングで出題される問題について
−早い人だと数十秒で解ける簡単な問題
−その手のプロでも数時間かけないと解けないような問題
出題される問題には難易度の差が存在!!
−さすがに数時間かける問題を解いている時間はなく,
専用の知識を使う問題だと分からないのでつまらない….
事前知識がなくても分かりそうな問題を取り上げてみます
2017/1/19 競技プログラミングについて 15
ABC049 C - 白昼夢 / Daydream
文字列 S (Sの長さは10^5以下) が与えられる
T が空文字列である状態から
次の操作を好きな回数繰り返すことで S = T にできるか判定せよ
−T の末尾に ‘dream’ ‘dreamer’ ‘erase’ ‘eraser’ のいずれかを追加
2017/1/19 競技プログラミングについて 16
S = ‘erasedreamer’
‘erase’ → ’dreamer’ の順で追加する
可能
S = ‘dreamerer’
不可能
ABC049 C - 白昼夢 / Daydream 解法
追加される文字列は微妙に被っていて大変…
‘dream’ ‘dreamer’ ‘erase’ ‘eraser’
‘dreamer…’ → ‘dream’ + ‘erase’,’eraser’
→ ‘dreamer’ + ??
文字列 S を反転させると簡単になる!
−追加される文字列も反転 ‘maerd’ ‘remaerd’ ‘esare’ ‘resre’
−愚直に比較するだけで判定可能となる
2017/1/19 競技プログラミングについて 17
yukicoder No.415 ぴょん
𝑵個の足場が距離 1 の等間隔で並んでいる
−足場にはある足場を基準に 1 から 𝑁 までの番号が振られている
うさぎちゃんは足場 1 にいる
うさぎちゃんは次の行動を好きな回数できる
−距離が D 離れた足場にジャンプして移動する
足場はデリケートなので, 1度ジャンプしたもとの足場は消える
うさぎがジャンプできる最大の回数を求めよ
2017/1/19 競技プログラミングについて 18
yukicoder No.415 ぴょん
N = 5, D = 2 の例
答えは 4
2017/1/19 競技プログラミングについて 19
yukicoder No.415 ぴょん 解説
(これは, 自分が作問してコンテストに出した問題です)
ジャンプは一方方向に, できるかぎり続けるのが最適
できなくなるタイミングを考える
−これは最初に足場 1 に移動するとき
−すなわち, 円環の長さの倍数と移動距離の倍数が最初に一致するところ
2017/1/19 競技プログラミングについて 20
yukicoder No.415 ぴょん 解説
これは N と D の最小公倍数 lcm(N, D) そのもの
これを D で割って 1 をひいた
𝑙𝑐𝑚 𝑁,𝐷
𝐷
− 1 が答えとなる
2017/1/19 競技プログラミングについて 21
プログラミングコンテスト
ABC049とかyukicoderとかはコンテストサイトの名前です
コンテストサイトにはいろいろあって以下のような特徴があります
2017/1/19 競技プログラミングについて 22
難易度 日時 時間 概要
ABC(AtCoder) ☆1~☆3
隔週土曜22時
100分 初心者向け
ARC(AtCoder) ☆3~☆5 100分
中~上級者向け
AGC(Atcoder) ☆2~☆6 110分
Codeforces ☆2~☆6 不定期 1時35分 120分 英語
2強のうちの1つ
SRM(Topcoder) ☆1~☆6 不定期 90分 英語
2強のうちの1つ
yukicoder ☆1~☆4 毎週金曜22時20分 120分 初心者に優しい
HackerRank ☆3~☆7 不定期 1週間など 英語, 開催時間が長い
たまに賞品を貰える
目次
競技プログラミングとは
競技プログラミングで得られるもの
プログラミングコンテスト
まとめ(宣伝)
2017/1/19 競技プログラミングについて 23
まとめ(宣伝)
時間がなくて説明しきれなかったところが大半ですが, たのしいです
−プログラミングコンテストで結果に応じて順位がつくところとか
興味を持ったらぜひ調べてみてください
−生協に競技プログラミング対策用の本
「プログラミングコンテストチャレンジブック」が売っています(やったね)
2017/1/19 競技プログラミングについて 24
ご清聴ありがとうございました!
Thank you for your kind attention!!
2017/1/19 競技プログラミングについて 25

Contenu connexe

En vedette

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
Atsushi Odagiri
 
Presentation 1112 for blog 2
Presentation 1112 for blog 2Presentation 1112 for blog 2
Presentation 1112 for blog 2
katie_higson
 
Gem 1
Gem 1Gem 1
Gem 1
bfnd
 

En vedette (19)

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
20160620 競技プログラミングのすゝめ
20160620 競技プログラミングのすゝめ20160620 競技プログラミングのすゝめ
20160620 競技プログラミングのすゝめ
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
グローバル理工人材のための今日から使える検索テクニック ―もう日本語でググるのはやめよう
グローバル理工人材のための今日から使える検索テクニック ―もう日本語でググるのはやめようグローバル理工人材のための今日から使える検索テクニック ―もう日本語でググるのはやめよう
グローバル理工人材のための今日から使える検索テクニック ―もう日本語でググるのはやめよう
 
Suzuki adferdin god_uppskrift
Suzuki adferdin  god_uppskriftSuzuki adferdin  god_uppskrift
Suzuki adferdin god_uppskrift
 
Ultizing Online Space: Virtual Fairs and Online Conversion Tools (with poll r...
Ultizing Online Space: Virtual Fairs and Online Conversion Tools (with poll r...Ultizing Online Space: Virtual Fairs and Online Conversion Tools (with poll r...
Ultizing Online Space: Virtual Fairs and Online Conversion Tools (with poll r...
 
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはChrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
 
AOA - Annual OMEL Conference Encourages Osteopathic Discourse
AOA - Annual OMEL Conference Encourages Osteopathic Discourse AOA - Annual OMEL Conference Encourages Osteopathic Discourse
AOA - Annual OMEL Conference Encourages Osteopathic Discourse
 
Subsidio i.1 demanda actual
Subsidio i.1 demanda actualSubsidio i.1 demanda actual
Subsidio i.1 demanda actual
 
Lean Day: West recap (censored)
Lean Day: West recap (censored)Lean Day: West recap (censored)
Lean Day: West recap (censored)
 
JavaScript Craftsmanship: Why JavaScript is Worthy of TDD
JavaScript Craftsmanship: Why JavaScript is Worthy of TDDJavaScript Craftsmanship: Why JavaScript is Worthy of TDD
JavaScript Craftsmanship: Why JavaScript is Worthy of TDD
 
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
AWS Roadshow Herbst 2013: Beschleunigen Sie Entwicklungs- und Test-Szenarien ...
 
Plan de clase
Plan de clasePlan de clase
Plan de clase
 
Tesla Croatia
Tesla CroatiaTesla Croatia
Tesla Croatia
 
Virtualni svet Second Life
Virtualni svet Second LifeVirtualni svet Second Life
Virtualni svet Second Life
 
Baby Love -Wildlife
Baby Love -WildlifeBaby Love -Wildlife
Baby Love -Wildlife
 
Presentation 1112 for blog 2
Presentation 1112 for blog 2Presentation 1112 for blog 2
Presentation 1112 for blog 2
 
Каталог Wellness
Каталог WellnessКаталог Wellness
Каталог Wellness
 
Gem 1
Gem 1Gem 1
Gem 1
 

Similaire à 競技プログラミングについて

業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules
Hiroki Kondo
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
満徳 関
 

Similaire à 競技プログラミングについて (20)

プログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョンプログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョン
 
Itelt vol7 9
Itelt vol7 9Itelt vol7 9
Itelt vol7 9
 
プログラミング必修化と魔法学校
プログラミング必修化と魔法学校プログラミング必修化と魔法学校
プログラミング必修化と魔法学校
 
ワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイル
 
2017年度 AMG Solution 会社説明会資料
2017年度 AMG Solution 会社説明会資料2017年度 AMG Solution 会社説明会資料
2017年度 AMG Solution 会社説明会資料
 
プログラミング勉強会
プログラミング勉強会プログラミング勉強会
プログラミング勉強会
 
初心者のための「ユニバーサルアナリティクスの理解と導入」~実習編~ 先生:山浦 直宏
初心者のための「ユニバーサルアナリティクスの理解と導入」~実習編~ 先生:山浦 直宏初心者のための「ユニバーサルアナリティクスの理解と導入」~実習編~ 先生:山浦 直宏
初心者のための「ユニバーサルアナリティクスの理解と導入」~実習編~ 先生:山浦 直宏
 
顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?顧客のニーズを捉えて、システム統合していますか?
顧客のニーズを捉えて、システム統合していますか?
 
導入
導入導入
導入
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
LT
LTLT
LT
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
xOps: エンジニアがスタートアップの成長の原動力となる日
xOps: エンジニアがスタートアップの成長の原動力となる日xOps: エンジニアがスタートアップの成長の原動力となる日
xOps: エンジニアがスタートアップの成長の原動力となる日
 
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムHour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウム
 
利根川講演@長野塩尻20170120
利根川講演@長野塩尻20170120利根川講演@長野塩尻20170120
利根川講演@長野塩尻20170120
 
業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules業務システムで使うSpring Dynamic Modules
業務システムで使うSpring Dynamic Modules
 
Scrum"再"入門
Scrum"再"入門Scrum"再"入門
Scrum"再"入門
 
kintone Cafe 新潟 Vol.3
kintone Cafe 新潟 Vol.3kintone Cafe 新潟 Vol.3
kintone Cafe 新潟 Vol.3
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
 

競技プログラミングについて