SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
❧
D:Rescue a postal worker
~郵便局員を救え~
原案:栗田
問題文:栗田
解答:井上・栗田・鈴木
2015/03 立命館大学競技プロブラミング合宿 1
❧
❧ 郵便局員が落とした郵便物の地点と,それ
ぞれの郵便物の配達先が与えられる.
❧ 落とした郵便物を拾い,指定の配達先に
届ける.
❧ 配達にかかる時間を最短にする.
問題概要
2015/03 立命館大学競技プロブラミング合宿 2
❧
❧ 3進数のビットDPを用いた
ダイクストラ法で求める.
• 3進数の1つのビットでそれぞれの
郵便物が今どのような状態にあるのかを管
理する.
• すべての郵便物が届けられた状態になる
最短の時間を求める.
❧ ダイクストラ法は蟻本参照
想定解法:ビットDP
2015/03 立命館大学競技プロブラミング合宿 3
❧
2015/03 立命館大学競技プロブラミング合宿 4
DPテーブル
1 2 3 4 5 6
(000000)3
0 ∞ ∞ ∞ ∞ ∞
(000001)3
∞ ∞ ∞ ∞ ∞ ∞
(000002)3
∞ ∞ ∞ ∞ ∞ ∞
… ∞ ∞ ∞ ∞ ∞ ∞
(2222222)3
∞ ∞ ∞ ∞ ∞ ∞
DPテーブルの初期状態
❧
❧ テーブルの行がどの落し物がどの状態に
なっているかを表す.
❧ 3進数表記した時の各桁は以下の状態を
表す
• 0 → 拾っていない
• 1 → 拾ったけど届けていない
• 2 → 届けた
2015/03 立命館大学競技プロブラミング合宿 5
各ビットの意味
❧
❧ (000102)3
→ 3つ目の落し物を拾っていて
1つ目の落し物を届けている状態.
❧ (000021)3
→ 2つ目の落し物を届けていて
1つ目の落し物を拾っている状態
2015/03 立命館大学競技プロブラミング合宿 6
状態の例
❧
❧ 実際には2進数の2つのビットで
• 00→拾っていない
• 01→拾ったけど届けていない
• 11→届けた
としたほうがコーディングが楽かもしれない
2015/03 立命館大学競技プロブラミング合宿 7
DPテーブル
❧
❧ このテーブルをダクストラ法で更新してい
き,初めて(222222)3
の行を更新した時の
値が配達にかかる最短の時間になる.
2015/03 立命館大学競技プロブラミング合宿 8
終了条件
❧
❧ グラフの頂点数をnとするとテーブルのサイ
ズはΘ(n * 3k
)なので,このテーブルをダイ
クストラ法を用いて埋めるにはO(3k
* m *
log(3k *
n))の計算量になる.
2015/03 立命館大学競技プロブラミング合宿 9
計算量
❧
❧ 井上(c++):87行
❧ 栗田(c++):99行
❧ 鈴木(c++):86行
2015/03 立命館大学競技プロブラミング合宿 10
Writer解
❧
・First Acceptance
 ・on-site iidx (28 min)
 ・on-line snuke (16 min)
・正答数 23/30 (76.7%)
2015/03 立命館大学競技プロブラミング合宿 11
提出状況

Mais conteúdo relacionado

Mais de HCPC: 北海道大学競技プログラミングサークル

Mais de HCPC: 北海道大学競技プログラミングサークル (20)

ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しいACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
 
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
 
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取りACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
 
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
 
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探しACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
 
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
プログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニックプログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニック
 

D editorial