Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AOJ 0112 A Milk Shop 解説
Search
kagamiz
March 28, 2013
Programming
0
470
AOJ 0112 A Milk Shop 解説
OkNCT-ICT 2013 春合宿 Day 4 (らしい) に解説したもの.
kagamiz
March 28, 2013
Tweet
Share
More Decks by kagamiz
See All by kagamiz
KCS v2. の開発
kagamiz
0
280
internship final presentation
kagamiz
0
1.3k
internship-middle term presentation
kagamiz
0
1.1k
すうがくのまほう
kagamiz
0
360
ご当地料理の紹介
kagamiz
0
470
オンラインジャッジシステムの実装
kagamiz
0
1.2k
AOJ 0022 Maximum Sum Sequence 解説
kagamiz
1
1.6k
AOJ 0557 A First Grader 解説
kagamiz
0
990
JOI2013 本選1 Illumination 解説
kagamiz
0
370
Other Decks in Programming
See All in Programming
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
660
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
980
Graviton と Nitro と私
maroon1st
0
160
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
Cap'n Webについて
yusukebe
0
160
ゲームの物理 剛体編
fadis
0
400
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
300
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
190
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.3k
Featured
See All Featured
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
280
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Being A Developer After 40
akosma
91
590k
My Coaching Mixtape
mlcsv
0
21
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
110
Designing for humans not robots
tammielis
254
26k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
160
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
260
Transcript
AOJ 0112 A Milk Shop 解説 @kagamiz
問題の概要 • n 人のお客さんがいます. • i 番目の人がミルクを入れるのにはai 分の時間がかかりま す. •
1 度に1 人の人がミルクを入れられるとき, 待ち時間の合計 を最小化してください.
問題文の復習 客の番号 ミルクを入れる時間 かかる待ち時間 客1 2 分 0 分 客2
6 分 2 分 客3 4 分 2 分 + 6 分 客4 3 分 2 分 + 6 分 + 4 分 客5 9 分 2 分 + 6 分 + 4 分 + 3 分 合計 37 分
問題文の復習 • 2 番目の人と3 番目の人を入れ替えてみる 客の番号 ミルクを入れる時間 かかる待ち時間 客1 2
分 0 分 客2 6 分 2 分 客3 3 分 2 分 + 6 分 客4 4 分 2 分 + 6 分 + 3 分 客5 9 分 2 分 + 6 分 + 3 分 + 4 分 合計 35 分
問題文の復習 • 昇順にすると爆速になりそう 客の番号 ミルクを入れる時間 かかる待ち時間 客1 2 分 0
分 客2 3 分 2 分 客3 4 分 2 分 + 3 分 客4 6 分 2 分 + 3 分 + 4 分 客5 9 分 2 分 + 3 分 + 4 分 + 6 分 合計 31 分
( ^o^) 昇順にすると爆速になりそう
( ^o^) 昇順にすると爆速になりそう • ( ⊖ ) ˘ ˘ 。o(まてよ,
なんでそれでいいんだろう)
( ^o^) 昇順にすると爆速になりそう • ( ⊖ ) ˘ ˘ 。o(まてよ,
なんでそれでいいんだろう) • |とりあえずSubmit| ┗(☋` )┓三
( ^o^) 昇順にすると爆速になりそう • ( ⊖ ) ˘ ˘ 。o(まてよ,
なんでそれでいいんだろう) • |とりあえずSubmit| ┗(☋` )┓三 • ( ) ◠‿◠ ☛Wrong Answer
( ^o^) 昇順にすると爆速になりそう • ( ⊖ ) ˘ ˘ 。o(まてよ,
なんでそれでいいんだろう) • |とりあえずSubmit| ┗(☋` )┓三 • ( ) ◠‿◠ ☛Wrong Answer • ▂▅▇█▓▒░(’ω’) █▇▅▂ ░▒▓ うわあああああああ
( ^o^) 昇順にすると爆速になりそう • ( ⊖ ) ˘ ˘ 。o(まてよ,
なんでそれでいいんだろう) • |とりあえずSubmit| ┗(☋` )┓三 • ( ) ◠‿◠ ☛Wrong Answer • ▂▅▇█▓▒░(’ω’) █▇▅▂ ░▒▓ うわあああああああ • 最悪のケースを考えてみよう
最悪のケース • 10000 人のお客さんがそれぞれ60 分ずつ待つときが最悪 の待ち時間になる. • その時にかかる待ち時間の合計は, n 番目の人は(n
– 1) * 60 分待たないといけないので, Σ[i = 1, 10000] (i – 1) * 60 = 2999700000 分 となる. • しかしint 型で表せる数の最大値は2147483647 なので, int 型で総和を求めるとWrong Answer となる. => 直すとAC
やっぱり昇順でいれるのが最適? • “しかしint 型で表せる数の最大値は2147483647 なので, int 型で総和を求めるとWrong Answer となる.=>直すと AC”
• こういう風に, 貪欲的に「その場での最善」を選択してい くことを繰り返すアルゴリズムを貪欲法という. • ここでは, なぜ貪欲法でうまくいくかを簡単に証明.
問題文の復習[再掲] • 昇順にすると爆速になりそう 客の番号 ミルクを入れる時間 かかる待ち時間 客1 2 分 0
分 客2 3 分 2 分 客3 4 分 2 分 + 3 分 客4 6 分 2 分 + 3 分 + 4 分 客5 9 分 2 分 + 3 分 + 4 分 + 6 分 合計 31 分
問題の言い換え • i 番目の人は, 待ち時間に(n – i) 回作用する. • つまり,
n 次元ベクトル a = (a1, a2, …, an), b = (n – 1, n – 2, …, 1, 0) としたとき, それぞれの成分を入れ替えて内積a ・ b を最小化する問題 となる.
問題の言い換え • a の各成分を昇順に入れ替えたベクトルをa', b は成分が 降順にならんだベクトルとすると, 次の並べ替え不等式が 成立する. a'・
b ≦ a ・ b (≦ a'' ・ b) • ここで, a'' は a の各成分を降順に並び替えたベクトル.
証明の概略 • a とb の各成分の個数が2 個だとする. • このとき, a1 ≦
a2, b1 ≦ b2 とすると • a1 b1 + a2b2 – (a1b2 + a2b1) = (a1 – a2)(b1 – b2)≧0 ∴a1b1 + a2b2 ≧ a1b2 + a2b1 • 各成分がn 個ある時も, ベクトルの2 つの成分に注目して同じ事 を行えば良い.