Enviar búsqueda
Cargar
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
•
0 recomendaciones
•
1,094 vistas
paiza
Seguir
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
Leer menos
Leer más
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 20
Descargar ahora
Descargar para leer sin conexión
Recomendados
Sanpo
Sanpo
oupc
Python opt
Python opt
Mikio Kubo
RUPC2014_Day3_G
RUPC2014_Day3_G
Yuma Inoue
Pfds20120304
Pfds20120304
Seizan Shimazaki
Meeting4
Meeting4
nullzine
Rによる富士山関数の描き方
Rによる富士山関数の描き方
wada, kazumi
DP特集
DP特集
Dai Hamada
diffの真髄
diffの真髄
fuku68
Recomendados
Sanpo
Sanpo
oupc
Python opt
Python opt
Mikio Kubo
RUPC2014_Day3_G
RUPC2014_Day3_G
Yuma Inoue
Pfds20120304
Pfds20120304
Seizan Shimazaki
Meeting4
Meeting4
nullzine
Rによる富士山関数の描き方
Rによる富士山関数の描き方
wada, kazumi
DP特集
DP特集
Dai Hamada
diffの真髄
diffの真髄
fuku68
141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会
paiza
mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説
paiza
ハノイの塔 解説
ハノイの塔 解説
paiza
シリコンバレー 面接体験
シリコンバレー 面接体験
paiza
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
paiza
paizaのオンラインジャッジを支えるDockerとその周辺
paizaのオンラインジャッジを支えるDockerとその周辺
paiza
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
機械学習概論 講義テキスト
機械学習概論 講義テキスト
Etsuji Nakai
Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~
nlab_utokyo
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
Ken Morishita
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
DS Exercise Course 2
DS Exercise Course 2
大貴 末廣
Or seminar2011final
Or seminar2011final
Mikio Kubo
WUPC2nd A問題
WUPC2nd A問題
Dai Hamada
Python基礎その1
Python基礎その1
大貴 末廣
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
Gurobi python
Gurobi python
Mikio Kubo
Mining of massive datasets chapter3
Mining of massive datasets chapter3
Maruyama Tetsutaro
Más contenido relacionado
Destacado
141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会
paiza
mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説
paiza
ハノイの塔 解説
ハノイの塔 解説
paiza
シリコンバレー 面接体験
シリコンバレー 面接体験
paiza
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
paiza
paizaのオンラインジャッジを支えるDockerとその周辺
paizaのオンラインジャッジを支えるDockerとその周辺
paiza
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
機械学習概論 講義テキスト
機械学習概論 講義テキスト
Etsuji Nakai
Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~
nlab_utokyo
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
Ken Morishita
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
Destacado
(15)
141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会
mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説
ハノイの塔 解説
ハノイの塔 解説
シリコンバレー 面接体験
シリコンバレー 面接体験
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
paizaのオンラインジャッジを支えるDockerとその周辺
paizaのオンラインジャッジを支えるDockerとその周辺
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
機械学習概論 講義テキスト
機械学習概論 講義テキスト
Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Similar a paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
DS Exercise Course 2
DS Exercise Course 2
大貴 末廣
Or seminar2011final
Or seminar2011final
Mikio Kubo
WUPC2nd A問題
WUPC2nd A問題
Dai Hamada
Python基礎その1
Python基礎その1
大貴 末廣
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
Gurobi python
Gurobi python
Mikio Kubo
Mining of massive datasets chapter3
Mining of massive datasets chapter3
Maruyama Tetsutaro
Rustで始める競技プログラミング
Rustで始める競技プログラミング
Naoya Okanami
T69 episteme
T69 episteme
えぴ 福田
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
Nagi Teramo
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
Kenji Otsuka
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
Infer.netによるldaの実装
Infer.netによるldaの実装
池田 直哉
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
Coqチュートリアル
Coqチュートリアル
Yoshihiro Mizoguchi
JSIAM_2019_9_4
JSIAM_2019_9_4
KoutaFunakoshi
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
fukuoka.ex
Similar a paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
(19)
DS Exercise Course 2
DS Exercise Course 2
Or seminar2011final
Or seminar2011final
WUPC2nd A問題
WUPC2nd A問題
Python基礎その1
Python基礎その1
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Gurobi python
Gurobi python
Mining of massive datasets chapter3
Mining of massive datasets chapter3
Rustで始める競技プログラミング
Rustで始める競技プログラミング
T69 episteme
T69 episteme
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
Infer.netによるldaの実装
Infer.netによるldaの実装
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Coqチュートリアル
Coqチュートリアル
JSIAM_2019_9_4
JSIAM_2019_9_4
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
1.
paizaオンラインハッカソン(略して POH![ポー!])Lite「天才火消しエン ジニア霧島 もしPMおじさんが『丸投
げ』を覚えたら」解説 ギノ株式会社 吉岡
2.
3.
問題 https://paiza.jp/poh/kirishima
4.
問題 • 人数(q)と費用(r)の組みがn個ある。
• 合計 m人 以上の組み合わせを探す。 • その中で最低の費用を出力する。 • 1≤n≤ 50 1≤q≤ 10,000 1≤r≤ 5,000,000 1≤m≤ 200,000
5.
解法1(全探索) • 各社について、使う・使わないの全組み合わせ
を走査する。 • 合計がm人以上の組み合わせか判定する。 • その中で、一番小さい組み合わせを探す。
6.
7.
コード例1-1 (全探索、再帰)
8.
@m = gets.to_i
@n = gets.to_i @companies = [] @n.times{ q, r = gets.split.map(&:to_i) @companies.push([q, r]) } def calc(i, engineers, cost) if i == @n if engineers >= @m return cost else return 999999999999 end end ret1 = calc(i+1, engineers, cost) ret2 = calc(i+1, engineers+@companies[i][0], cost +@companies[i][1]) return [ret1, ret2].min end puts calc(0, 0, 0)
9.
コード例1-2 (全探索、ビット演算) 10進数2進数(0埋め3桁)
0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
10.
@m = gets.to_i
@n = gets.to_i @companies = [] @n.times{ q, r = gets.split.map(&:to_i) @companies.push([q, r]) } mincost = 99999999999 (0..2**@n).each{|i| engineers = 0 cost = 0 (0...@n).each{|j| if (i & (1<<j) != 0) then engineers += @companies[j][0] cost += @companies[j][1] end } if engineers >= @m mincost = [mincost, cost].min end } puts mincost
11.
計算量 • 計算量(Complexity)とは?
• O(x): 定数倍の差を無視した計算量 • O(g(n)) = {f(n): ある正の定数c, n0が存在して、 すべてのn>n0に対して0≤f(n)≤cg(n)を満たす} • アルゴリズムの効率の評価に多く使われる
12.
計算量 • 各社、「使う」「使わない」の2通り
• 2^n通りの組み合わせ => 2^n に比例した時間がかかる。 => 計算量: O(2^n) • n=50なので、合計1,125,899,906,842,624通 り
13.
効率は上げれないか?
14.
解法2 (動的計画法) •
動的計画法とは 問題を解いていく途中の結果を記録しておき、 再利用することで効率を上げる方法
15.
解法2 (動的計画法) •
最大人数をサイズとするメモ配列(DP[人数])を用 意し、コストを記録していく。 • 各会社をループ • 各メモ配列(DP)をループ • DP[メモ配列の人数+会社の人数] =MIN(メモ配列のコスト + 会社のコスト, DP[メモ配列の人数+会社の人数])
16.
17.
コード
18.
m = gets.to_i
n = gets.to_i dp = Array.new(m+1, 9999999999999) dp[0] = 0 n.times{ q, r = gets.split.map(&:to_i) m.downto(0).each{|i| q2 = [i+q, m].min dp[q2] = [dp[q2], dp[i]+r].min } } puts dp[m]
19.
計算量 • 会社数(m)
x 最大人数(n) がループ回数 • O(m x n) • 最大ループ回数: 10,000,000 回
20.
参考 • 詳しくはblog
『もし先輩女子エンジニアが『アルゴリズム』 を図解で教えてくれるとしたら』 http://paiza.hatenablog.com/entry/2014/09/11/%E3%82%82%E3%81%97%E5%85%88%E8%BC%A9%E5%A5%B3%E5%AD %90%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8C%E3%80%8E%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA %E3%83%A0%E3%80%8F%E3%82%92%E5%9B%B3
Descargar ahora