SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
競技プログラミング講義
#1 「導入編」
競技プログラミングの講義です
競技プログラミングとは
「問題で与えられた条件に従って、
早く正確にプログラムを書く競技」
( 引用 : 競技プログラミング wiki )
競技プログラミングとは
「問題で与えられた条件に従って、
早く正確にプログラムを書く競技」
( 引用 : 競技プログラミング wiki )
問題を解くにあたって
● 問題を解く
– 効率的な解法を考える
– 考えた解法を(バグを埋めこまないよう
に)正しく実装する
問題を解くにあたって
● 問題を解く
– 効率的な解法を考える
– 考えた解法を(バグを埋めこまないよう
に)正しく実装する
問題を解くにあたって
● 問題を解く
– 効率的な解法を考える
– 考えた解法を(バグを埋めこまないよう
に)正しく実装する
コードについて
● 早く書くのは重要
● きれいに書くのも重要
– インデントはちゃんと揃える
– ( C 言語で)中括弧を使いすぎない(ネス
トしすぎない)
– 変数名はできるだけわかりやすいものを
( 1〜5文字程度)
やるだけ
                 Brute Force
やるだけ (brute force) とは
● 問題文の通り実装するだけで正解でき、工
夫などを必要としない問題
● 特に実装の大変な問題は実装するだけ
(implemention) と呼ばれることもある
● ハラスメントの常套句
● ハラスメンターにかかればどんな問題でもやるだけと言
われる
〜実装タイム〜
NPCA Judge  問題「講義用問題 1 」
問題内容
●
サイズ N の数列 A の A[l] 〜 A[r] の和を求
めるクエリを M 個処理してください
●
1 N 1,000≦ ≦
●
1 M 1,000≦ ≦
●
1 A[i] 1,000,000,000≦ ≦
( ^o^) こんな問題やるだけじゃないか
( ˘ ˘)⊖ 。 o( どうせ Accepted だろ )
|System Test| (┗ ☋ ` )┓ 三
( )◠‿◠ ☛ Wrong Answer
(’ω’)▂▅▇█▓▒░ ░▒▓█▇▅▂ うわああああ
ポイント①:制限時間・メモリ
● 問題には制限時間・メモリ制約というもの
があり、それ以内で処理しなくてはならな
い
● 制限時間は計算量で大体計算できる
● メモリ使用量も使った配列の大きさなどか
ら計算できる
ポイント②:計算量
●
計算量とは
– その名の通り計算した量
– 代入、四則演算などが行われた回数
– For 文の繰り返し回数から概算できる
●
計算量と時間ー 1 秒で
– 計算量 :10^6 → まず大丈夫
– 計算量 :10^7 → まだ大丈夫
– 計算量 :10^8 → かなり厳しい
ポイント③:インデックス
● 問題文での番号の付け方は大体 1 から
● 配列で扱う場合0からなので0からの方が
都合がいい
ポイント④: int 型
●
int 型の変数で扱える値の範囲は大体
±2×10^9 くらいまで
●
今回の問題では答えは最高
10^9×10^3 = 10^12
くらいになりうる
●
long long int 型なら 10^18 くらいまで入る
→ 大勝利!
おまけ
● 今回はやるだけで解くことができた
が、 N,M が大きくなると…?
→ 夏合宿講義 by catupper
練習問題
● AOJ Volume.5
各年の問題 (Source が JOI ○○○○ となってい
る問題 ) のうち最初の 2 問程度
ただし 2011 年分を除く
→ 次回 #2 「全探索」
To be continued...

Contenu connexe

Similaire à 導入

テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践
Yuusuke Takeuchi
 
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
masashi takehara
 
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
満徳 関
 
プログラミング技法特論第1回
プログラミング技法特論第1回プログラミング技法特論第1回
プログラミング技法特論第1回
Noritada Shimizu
 

Similaire à 導入 (20)

Vantan shinsuke miyaki_upload
Vantan shinsuke miyaki_uploadVantan shinsuke miyaki_upload
Vantan shinsuke miyaki_upload
 
本の紹介
本の紹介本の紹介
本の紹介
 
Process Framework「CYCLONE for Mobile Apps」(20120118)
Process Framework「CYCLONE for Mobile Apps」(20120118)Process Framework「CYCLONE for Mobile Apps」(20120118)
Process Framework「CYCLONE for Mobile Apps」(20120118)
 
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践
 
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようプログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
 
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法
 
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ 課題立案10本ノック #eLV勉強会
 
Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)
 
企業でのAI開発でAIエンジニアに求められるもの
企業でのAI開発でAIエンジニアに求められるもの企業でのAI開発でAIエンジニアに求められるもの
企業でのAI開発でAIエンジニアに求められるもの
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
Offshore Agile Development in XP
Offshore Agile Development in XPOffshore Agile Development in XP
Offshore Agile Development in XP
 
プログラミング技法特論第1回
プログラミング技法特論第1回プログラミング技法特論第1回
プログラミング技法特論第1回
 
静的解析のROI
静的解析のROI静的解析のROI
静的解析のROI
 
Semat - a Japanese introduction
Semat - a Japanese introductionSemat - a Japanese introduction
Semat - a Japanese introduction
 
Getting Git Right wrap up #GettingGitRight
Getting Git Right wrap up #GettingGitRightGetting Git Right wrap up #GettingGitRight
Getting Git Right wrap up #GettingGitRight
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
 

Plus de Ryunosuke Iwai (12)

音声認識
音声認識音声認識
音声認識
 
DP
DPDP
DP
 
貪欲
貪欲貪欲
貪欲
 
全探索2
全探索2全探索2
全探索2
 
全探索
全探索全探索
全探索
 
Rth number
Rth numberRth number
Rth number
 
Glasses
GlassesGlasses
Glasses
 
Ice
IceIce
Ice
 
Water flow
Water flowWater flow
Water flow
 
文字列処理
文字列処理文字列処理
文字列処理
 
データ処理
データ処理データ処理
データ処理
 
Arduino
ArduinoArduino
Arduino
 

導入