SlideShare a Scribd company logo
1 of 15
G : Yu-kun Likes a
Treasure
原案 : 千田
解答 : 大桃、山本、千田
問題概要
 洞窟とゆう君の初期位置の情報が与えられるので
ゆう君が全ての道を通って再度初期位置に戻って
くるまでに移動する距離の総和の最小値を求めた
い
 洞窟を構成する各部屋にはボタンがちょうど1つだ
け存在する
 ゆう君の初期位置はいずれかのボタンの位置と同じ
 道は扉で閉ざされているのでボタンで開かないと移
動できない
問題概要
問題概要
想定解法
 幾何、dijkstra + 中国人郵便配達問題
幾何、dijkstraパート
 目的 : 洞窟を重み付き無向グラフに変換する
幾何、dijkstraパート
 多角形に別の多角形との交点を追加する
幾何、dijkstraパート
 多角形の頂点、追加された点からdijkstra用のグラ
フを作成
幾何、dijkstraパート
 多角形の頂点、追加された点からdijkstra用のグラ
フを作成
 注意点
 多角形の外側を通るような辺は追加しない
 辺を細分化し、それらの辺の中心が多角形に内
包されてないかチェック など
幾何、dijkstraパート
 dijkstraで多角形の頂点、追加された点、ボタンの
間の最短の移動距離を求める
 ボタンの間の最短の移動距離から中国人郵便配達
問題用のグラフを作成する
中国人郵便配達問題パー
ト
 先ほどのパートで重み付き無向グラフが得られた
 後はある頂点からスタートして全ての辺を少なく
とも1回は通ってスタートした頂点に戻るために
必要な最小のコストを求めればよい ( CPP )
中国人郵便配達問題パー
ト
 一筆書きできる場合は全ての辺をちょうど1回だ
け通ってスタートした頂点に戻れるため、各辺の
総和が答えとなる
 グラフの全ての頂点の次数は偶数
中国人郵便配達問題パー
ト
 そうでない場合、次数が奇数の頂点が偶数個存在
するのでそれらの頂点から完全グラフを作る
中国人郵便配達問題パー
ト
 作成した完全グラフの最小マッチングを求める
 ノード数は高々15なのでビットDPで求めることが
できる
 dp[どの頂点を使ったかのかをビットで表したもの] := こ
の状態にする際にかかるコストの最小値
 この結果のマッチング通りに辺を追加することで最初
のグラフの全ての次数は偶数となる => 一筆書きできる
 結局、スタート地点は関係ない
 これより、全ての辺の総和 + 最小マッチング が答え
となる
提出状況
 First Acceptance
 オンサイト WaldReisfeld (04:52)
 オンライン --- ()

More Related Content

What's hot

AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Inc.
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系tmaehara
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Inc.
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Inc.
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会Yuuki Ono
 
AtCoder Regular Contest 001
AtCoder Regular Contest 001AtCoder Regular Contest 001
AtCoder Regular Contest 001AtCoder Inc.
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木理玖 川崎
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説AtCoder Inc.
 
CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説AtCoder Inc.
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Inc.
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 

What's hot (20)

AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
一般グラフの最大マッチング
一般グラフの最大マッチング一般グラフの最大マッチング
一般グラフの最大マッチング
 
AtCoder Regular Contest 001
AtCoder Regular Contest 001AtCoder Regular Contest 001
AtCoder Regular Contest 001
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 

More from NariyoshiChida

More from NariyoshiChida (11)

RUPC2015Day2 - K
RUPC2015Day2 - KRUPC2015Day2 - K
RUPC2015Day2 - K
 
RUPC2015Day2 - C
RUPC2015Day2 - CRUPC2015Day2 - C
RUPC2015Day2 - C
 
RUPC2015Day2 - E
RUPC2015Day2 - ERUPC2015Day2 - E
RUPC2015Day2 - E
 
RUPC2015Day2 - I
RUPC2015Day2 - IRUPC2015Day2 - I
RUPC2015Day2 - I
 
RUPC2015Day2 - D
RUPC2015Day2 - DRUPC2015Day2 - D
RUPC2015Day2 - D
 
RUPC2015Day2 - F
RUPC2015Day2 - FRUPC2015Day2 - F
RUPC2015Day2 - F
 
RUPC2015Day2 - A
RUPC2015Day2 - ARUPC2015Day2 - A
RUPC2015Day2 - A
 
RUPC2015Day2 - B
RUPC2015Day2 - BRUPC2015Day2 - B
RUPC2015Day2 - B
 
RUPC2015Day2 - H
RUPC2015Day2 - HRUPC2015Day2 - H
RUPC2015Day2 - H
 
RUPC2015Day2 - 総評
RUPC2015Day2 - 総評RUPC2015Day2 - 総評
RUPC2015Day2 - 総評
 
RUPC2015Day2 - J
RUPC2015Day2 - JRUPC2015Day2 - J
RUPC2015Day2 - J
 

RUPC2015Day2 - G