SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
G: カードの迷宮
Dungeon of Cards
 原案:井上
問題文:鈴木
 解答:井上・鈴木
問題概要
• 英大文字と数字がそれぞれ1つずつ描かれた扉N
枚・カードM枚がある
• 英字か数字のどちらか一方が っていれば、カー
ドで扉を開けられる
• カードには値段があり、使ってもなくならない
• 扉をすべて開ける最小コストは?
A 1 Z 0K 1 A0開かない
開く
簡単にした問題
• 英大文字と数字がそれぞれ1つずつ描かれた扉N
枚・カード各種類がある
• 英字か数字のどちらか一方が っていれば、カー
ドで扉を開けられる
• カードの値段はすべて1、使ってもなくならない
• 扉をすべて開ける最小コストは?
A 1 Z 0K 1 A0開かない
開く
簡単にした問題の解法
• 使う数字を全通り決め打ちする (210通り)
• その数字集合で開けられない扉は、英字で開
けるしかない

→ 使う英字集合もわかる
• max{ |数字集合|, |英字集合| }が答え
Z 5 U 0A 1
使う数字: {1,0}
使う英字: { Z }
想定解法: 最小費用流
• 使う数字を決め打ちすれば、使わなければならな
い英字がわかる
• 使うべき数字と英字をカードですべてカバーする
最小費用を求めればよい

→ 数字と英字の二部グラフで最小費用流

  (辺重みがカードの値段、辺容量は1)
0
1
A
B
C
3
6
1
8
5
S T
0
0
0
0
0
想定解法 Q&A
Q. 最小費用流ってなんですか?
A. 辺にコストと容量が付いたグラフに対し、
  与えられた流量 F を流すときにかかる
  最小コストを求める問題のことです。
a
d
b
c
e
3,9
1,8
4,9
1,2
S T
5,2
3,10 4,6
1,7
2,10
コスト, 容量
想定解法 Q&A
Q. 最小費用流ってなんですか?
A. 辺にコストと容量が付いたグラフに対し、
  与えられた流量 F を流すときにかかる
  最小コストを求める問題のことです。
a
d
b
c
e
3,1/9
2,4/8
5,3/9
1,2/2
S T
5,5/5
3,5/7 3,2/6
1,7/7
2,1/10
コスト, 流す量/容量
流量 F = 10 最小コスト = 83
想定解法 Q&A
Q. 最小費用流はどうすれば解けますか?
A. 蟻本を読もう!



補足: 最小費用流問題を O( ¦F¦ ¦E¦ log¦V¦ ) で解く

   アルゴリズムが知られています

   ( ¦F¦ = 流す流量, ¦E¦ = 辺数, ¦V¦ = 頂点数 )
想定解法 Q&A
Q. フロー速いけどさすがに辺数 M = 104 は

  間に合わなくない?
A. 英数字が同じカードは一番安いのだけ使えば🙆

  → 高々 260 辺になる
0 A
8
4
1
0 A
1
想定解法 Q&A
Q. 使う数字・英字だけで二部グラフを使って

  フロー流せばおk?
A. 数字・英字は全部使わなければ🙅
1
B
0
1
A
B
C
3
6
1
8
5
8
コスト8 コスト6>
想定解法 Q&A
Q. じゃあどうやって使わなければならない

  英数字を制御するの?
A. ソース・シンクからの辺に最小流量制約をつける
0
1
A
B
C
3
6
1
8
5
S T
流量: [0, ]
コスト: 0
[1, ] / 0
[1, ] / 0
[0, ] / 0
[0, ] / 0
想定解法 Q&A
Q. 流す流量は max{ ¦数字集合¦, ¦英字集合¦ }

  でおk?
A. さっきの例でダメだってわかるだろ💢
1
B
0
1
A
B
C
3
6
1
8
5
8
コスト8 コスト6>
想定解法 Q&A
Q. じゃあいくら流せばいいんですかね……
A. max{ ¦数字¦, ¦英字¦ } から ¦数字¦+¦英字¦の間

  (入力によって変わるので全部試す)



補足: 普通のフローアルゴリズムは1本ずつ最短路を探すので、
   最大流まで逐一コストを調べればOK
0
1
A
B
C
3
6
1
8
5
流量1, コスト8 流量2, コスト6>
0
1
A
B
C
3
6
1
8
5
解法まとめ
1. 数字を210通り決め打ちし、使うべき英字を
求める
2. 数字・英字の二部グラフを作り、使う英数字
に最小流量制約を付けて最小費用流を解く
• 計算量: 210
回 O(|F| |E| log |V|) の最小費用流を解く

ただし、|F| = 最大流 ≤ 36, |E| = 辺数 ≤ 260, |V| ≤ 36+2
別解 (多くの選手がこれだった)
• 割り当て問題をDPで解くことも可能
• DP[i][S] := i番目までの英字が書かれたカードのみで、使う
べき数字の部分集合Sをカバーするときの最小コスト
• i番目の英字とj番目の数字が書かれたカードを使うとき、
DP[i+1][S U {j}] を更新する感じ
• 使った数字集合Sが使うべき数字集合の部分集合であること
に注目して解析すると、全体で O( |英字| × 3
|数字|
)
writer解
• 井上 106行 (C++)
• 鈴木 158行 (C++)
提出状況
• First Acceptance
• on-site: iidx (176 min)
• on-line: snuke (88 min)
• 正答率 7/25 (28.0%)

Weitere ähnliche Inhalte

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

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

写像 12 相
写像 12 相写像 12 相
写像 12 相
 
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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

G editorial