20
社内 プログラミング勉強会 #1 プロアリんごさん→

社内勉強会 2014/10/08

Embed Size (px)

Citation preview

Page 1: 社内勉強会 2014/10/08

社内 プログラミング勉強会#1

プロアリんごさん→

Page 2: 社内勉強会 2014/10/08

勉強会?

ぷろぐらみんぐの勉強会? なにすんの??

ぷろぐらみんぐ??

Page 3: 社内勉強会 2014/10/08

はじめに

Page 4: 社内勉強会 2014/10/08

これからどんな内容・頻度になっていくかは

みなさんの状況によって変わっていきます

Page 5: 社内勉強会 2014/10/08

それを踏まえて…

Page 6: 社内勉強会 2014/10/08

より効率の良い アルゴリズムを考える 練習をします!!

Page 7: 社内勉強会 2014/10/08

教本

あのアリ本!

Page 8: 社内勉強会 2014/10/08

どんな本?

Page 9: 社内勉強会 2014/10/08

プログラミングコンテスト の問題を通して…

アルゴリズム のしくみや考え方を 楽しく習得できる本

Page 10: 社内勉強会 2014/10/08

進め方

Page 11: 社内勉強会 2014/10/08

進め方の1例

1. 必要に応じて練習問題やアルゴリズムの紹介

2. 今日のお題にチャレンジ

3. 解説/解答を読んで理解

4. 自分の得意な言語で書いてみる(採点はしてもらえないけれど)

5. おまけ:LT(LightningTalk)で情報共有など

# 毎回担当者を変えるのがいいかな

Page 12: 社内勉強会 2014/10/08

おまけ

Page 13: 社内勉強会 2014/10/08

計算量 って意識してますか?

Page 14: 社内勉強会 2014/10/08

大学のアルゴリズムの講義とかで

やりましたよね( ́◔◡◔`)?

Page 15: 社内勉強会 2014/10/08

計算量について知りたい方は

詳しくはいろいろぐぐってみてください^q^

•計算量のはなし - 赤い黒歴史を蓄積する http://catupper.hatenablog.com/entry/20131207/1386402713

•計算量 http://www.slideshare.net/catupper/ss-26238956

ex. forループ4重なら O(n^4)

ex. マージソートなら O(n log n)

Page 16: 社内勉強会 2014/10/08

初回ということで、ウォーミングアップ!

Page 17: 社内勉強会 2014/10/08

アリさん問題(Ants:POJ No.1852)長さLcmの竿の上をn匹のアリが毎秒1cmのスピードで歩いています。アリが竿の端に到達すると竿の下に落ちていきます。また、竿の上は狭くてすれ違えないので、二匹のアリが出会うと、それぞれ反対を向いて戻っていきます。

各アリについて、現在の竿の左端からの距離Xiはわかりますが、どちらの方向を向いているのかはわかりません。

すべてのアリが竿から落ちるまでにかかる最小の時間と最大の時間をそれぞれ求めなさい。

http://poj.org/problem?id=1852

制約 1 ≦ L ≦ 10^6 1 ≦ n ≦ 10^6 0 ≦ Xi ≦ L

入力例 L = 10 n = 3 x = {2, 6, 7}

出力例 min = 4 max = 8

※min:(左、右、右) ※max:(右、右、右)

Page 18: 社内勉強会 2014/10/08

正解例 その1アリの向いている方向は、1匹につき2通り。

n匹いるので、全部で2^n通り。

nがでかいとやばいね!!現実的じゃないね!!

http://poj.org/problem?id=1852

Page 19: 社内勉強会 2014/10/08

正解例 その2最小のケースは、すべてのアリが近い方の端に向かうパターン。 では、最大になるケースは?

まず問題をもっと簡単化しましょう。

衝突後逆方向に行くのと、すれ違うのは同じ! そのため、最大になるのは、 端までの距離の最大値を求めればOK!

http://poj.org/problem?id=1852

出会った後… 逆方向へ進むのも、すれ違うのも同じ

Page 20: 社内勉強会 2014/10/08

完またな!