SlideShare a Scribd company logo
1 of 11
Download to read offline
RUPC2016 Day3 2016/03/08
RUPC2016 Day3
G: Destiny Draw
運命力
1
原案:井上
解説:井上
問題文:井上
解答:井上、栗田
RUPC2016 Day3 2016/03/08
問題概要
上から順に 1 ~ N の番号がついている

カードの山がある
K 種類のシャッフルが可能である
K種類のうちi番目のシャッフルでは上か
らai枚目からbi枚を抜き、上に重ねる。
シャッフルはそれぞれ ti 秒を要する。
ちょうど T 秒のシャッフルの後、一番上の
カードを C にする方法は何通りあるか。
10
9
+7で割った余りを出力せよ。
制約: 2 ≦ N ≦ 40, 1≦ K ≦ N(N+1)/2,
1≦ ti ≦5, 1≦ T ≦ 10
6
2
RUPC2016 Day3 2016/03/083
1
ai
ai-1
ai+bi-1
ai+bi-1
N
1
ai
ai-1
ai+bi-1
ai+bi-1
N
ai-1
bi
i番目のシャッフル
問題概要
RUPC2016 Day3 2016/03/08
TLE解法(1)
全探索
今t秒経過しているとすると、k番目の
シャッフルによって時間はt+tkになる
各時点での山札の状態を記憶しながら
シミュレーションしていき、時間がTに
なったときに一番上がCなら答えをイン
クリメント
各時点で選択肢がK+1通りあり、シャッフ
ルのシミュレーションにO(N)かかる。分
岐の深さは最大Tなので、O(NKT
)
4
RUPC2016 Day3 2016/03/08
TLE解法(2)
最初C枚目にあった札が時刻tでどこにあるかだけわかれ
ばよい = DP
dp[t][p]: C枚目のカードが時刻tにおいて上からp枚
目にある
i番目のシャッフルをシミュレートすると、シャッフル前
のxi枚目がシャッフル後yiに行くという情報が得られる
dp[t+ti][yi] += dp[t][xi]
dpの計算時にシャッフルをシミュレートするとO(N)とな
るが、前処理でシミュレートすればO(1)にできる。全体
でO(KNT)
5
RUPC2016 Day3 2016/03/08
TLE解法(3)
シャッフルのシミュレーション結果
は順列になるので、これの順列行列
を考える
順列行列は遷移関係を表しているの
で、有向グラフの隣接行列とみなせ
る
同じtiの行列をまとめてしまっても
よい
6
RUPC2016 Day3 2016/03/08
順列行列のマージ
7
a=1,b=3,t=3
N=6
a=3,b=2,t=1 a=2,b=1,t=3 a=4,b=3,t=1
0 0 1 0 0 0
0 0 0 1 0 0
1 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 1 0 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
(3 4 1 2 5 6) (1 2 3 4 5 6) (2 1 3 4 5 6) (4 5 6 1 2 3)
0 0 1 1 0 0
0 0 0 1 1 0
1 0 0 0 0 1
1 1 0 0 0 0
0 1 0 0 1 0
0 0 1 0 0 1
1 1 0 0 0 0
1 1 0 0 0 0
0 0 2 0 0 0
0 0 0 2 0 0
0 0 0 0 2 0
0 0 0 0 0 2
t=1 t=3
RUPC2016 Day3 2016/03/08
TLE解法(3)
この行列をTLE解法(2)のDPに応用すると
O(max(ti)N2
T) → まだ少し大きい

















8
RUPC2016 Day3 2016/03/08
想定解法
この行列をTLE解法(2)のDPに応用する
とO(max(ti)N2T) → まだ少し大きい
dpを拡張する
dp[t][v][p]: 初期にv枚目にあった
札が時刻tにおいてp枚目にある
こうすると、遷移は行列積を用いて書
ける(隣接行列の積がkステップで行け
るところを表すのと同じ)
9
RUPC2016 Day3 2016/03/08
解法(4)
漸化式を明示すると以下のようになる
dp[i] = A1×dp[i-1] + A2×dp[i-2] +
A3×dp[i-3] + A4×dp[i-4] +
A5×dp[i-5]
Atiは先述の時刻ti毎にまとめた順列行列
行列の5項間漸化式になったので、行列の行
列を作って行列累乗のテクニックを用いる
行列サイズが(max(ti)*n)×(max(ti)*n)
なので、O((max(ti)*n)3
logT) → 間に
合う
10
RUPC2016 Day3 2016/03/08
5項間漸化式の行列表現
11
dp[T+4]
dp[T+3]
dp[T+2]
dp[T+1]
dp[T]
A1 A2 A3 A4 A5
I O O O O
O I O O O
O O I O O
O O O I O
=
dp[4]
dp[3]
dp[2]
dp[1]
dp[0]
×
dp[5]
dp[4]
dp[3]
dp[2]
dp[1]
A1 A2 A3 A4 A5
I O O O O
O I O O O
O O I O O
O O O I O
=
dp[4]
dp[3]
dp[2]
dp[1]
dp[0]
×
T
※IはN×Nの単位行列、
OはN×Nの零行列

More Related Content

What's hot

Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)
Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)
Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)Nagi Teramo
 
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)洋史 東平
 
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
C89 Wi-Fi: ららら、(無線的に)素敵なComiket SpaceC89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
C89 Wi-Fi: ららら、(無線的に)素敵なComiket SpaceNaoya Kaneko
 

What's hot (6)

Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)
Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)
Rで時系列をスマートに捌く方法のご相談(Tokyo.R#09)
 
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)
あなたの時計は大丈夫? 「想定外」だった日時の不具合(原本)
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
C89 Wi-Fi: ららら、(無線的に)素敵なComiket SpaceC89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
 
Pythagorean
PythagoreanPythagorean
Pythagorean
 
Pyramid
PyramidPyramid
Pyramid
 

Viewers also liked (6)

立命合宿2016Day3:E問題
立命合宿2016Day3:E問題立命合宿2016Day3:E問題
立命合宿2016Day3:E問題
 
立命合宿2016Day3:D問題
立命合宿2016Day3:D問題立命合宿2016Day3:D問題
立命合宿2016Day3:D問題
 
Государственные закупки для предпринимателей
Государственные закупки для предпринимателейГосударственные закупки для предпринимателей
Государственные закупки для предпринимателей
 
立命合宿2016Day3:F問題
立命合宿2016Day3:F問題立命合宿2016Day3:F問題
立命合宿2016Day3:F問題
 
ACPC2016Day3:E問題
ACPC2016Day3:E問題ACPC2016Day3:E問題
ACPC2016Day3:E問題
 
Topological sort
Topological sortTopological sort
Topological sort
 

Similar to 立命合宿2016Day3:G問題

Similar to 立命合宿2016Day3:G問題 (6)

JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説
 
wq-2. 待ち行列
wq-2. 待ち行列wq-2. 待ち行列
wq-2. 待ち行列
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 

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

More from 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 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: パフェ
 
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
 
プログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニックプログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニック
 
RUPC 2019 Day3 G: Donuts Orientation
RUPC 2019 Day3 G: Donuts OrientationRUPC 2019 Day3 G: Donuts Orientation
RUPC 2019 Day3 G: Donuts Orientation
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (10)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

立命合宿2016Day3:G問題