SlideShare a Scribd company logo
1 of 10
Download to read offline
Autumn Fest 2012 J
   Ninja of Train
       writer: uwi
     tester: komiya



                      1
問題概要

[0,H-1]の窓に対して時間[√D]だけかけてD移動
する動作を繰り返したとき時刻Tまでの動作の総数
を求めよ(語弊あり)。




                          2
注意点

● Hより長く飛べる場合があります!
 ○ サンプル3は
   ■ 0
   ■ 0→1,0→2,0→3
   ■ 0→1→2,0→1→3,0→1→4
   ■ 0→2→3,0→2→4
   ■ 0→3→4
   ■ 0→4(時間2かけて移動)
   の11通り。




                         3
考え方

忍者が飛んでいる間は、目標地点の真上で降下し
ていると考える。

                    t=1



 t=0
                    t=2
                          x
       0        4
                              4
考え方

車窓の系から見て、Dジャンプすると、移動距離は
D-[√D], 降下の最大の高さは[√D]-1になる。
D-[√D]<Hを満たすDについて考えれば良い。
                           t=1



 t=0
                           t=2
                                 x
       0            4-√4
                                     5
考え方

最大のDをPとおくと、状態数はH*[√P]. この中で
DPなり行列べき乗なり。

1. DP解法 (O((H[√P])^2*T))
2. 行列べき乗 (O((H[√P])^3*log T))
3. ??????? (O(H^3*[√P]^2*log T))




                                   6
3. 行列べき乗高速化

[√P]*[√P]ごとのブロックにわけると、各ブロックは
下三角Toeplitz行列になっている。
http://en.wikipedia.org/wiki/Toeplitz_matrix




(                                         )
    1                 1

    1    1                   1

         1      1                   1




    1


                                               7
3. 行列べき乗高速化

下三角Toeplitz行列同士の乗算はO(N^2)で行えるの
で、これを利用して高速化できる。
http://www.codeforces.com/problemset/problem/223/C (類題)




                                                      8
注意点

● %modが多くなってTLEする場合がある。
 ○ 各自工夫を。modを小さくしているのはこれのためです。
● 数え上げ項の扱い
 ○ ブロックのサイズは全て同じでしかも下三角Toeplitzじゃ
   ないといけないので、数え上げ用のブロックを単位行列
   のような形にしておく。




                                    9
余談

● 最初は忍者が止まったままのものも考えたかっ
  たが、Toeplitzにならずゲロムズになってしまっ
  た。
● rngさんまじぱねぇ
 ○ ACした2人は0~H-1の中で進む組合せが限定的なこと
   を利用してDP+Combinationで解いていました。




                                  10

More Related Content

What's hot

SICP
SICPSICP
SICPS W
 
ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5noname409
 
RUPC2014_Day2_C
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_Cs1190048
 
最適化の手前の数学
最適化の手前の数学最適化の手前の数学
最適化の手前の数学俊介 後藤
 
Lazy Pairing Heap
Lazy Pairing HeapLazy Pairing Heap
Lazy Pairing HeapKei Hibino
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Inc.
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説AtCoder Inc.
 
楽しいクォータニオンの世界 田所 第二回Rogyゼミ
楽しいクォータニオンの世界 田所 第二回Rogyゼミ楽しいクォータニオンの世界 田所 第二回Rogyゼミ
楽しいクォータニオンの世界 田所 第二回Rogyゼミrogy01
 
Goto
GotoGoto
Gotooupc
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Inc.
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求めるabc3141
 
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズムTasuku Soma
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - Komeometo
 
2011年12月9日
2011年12月9日2011年12月9日
2011年12月9日nukaemon
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理wada, kazumi
 
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義するblackenedgold
 

What's hot (20)

Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
wq-2. 待ち行列
wq-2. 待ち行列wq-2. 待ち行列
wq-2. 待ち行列
 
SICP
SICPSICP
SICP
 
ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5
 
RUPC2014_Day2_C
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_C
 
最適化の手前の数学
最適化の手前の数学最適化の手前の数学
最適化の手前の数学
 
Lazy Pairing Heap
Lazy Pairing HeapLazy Pairing Heap
Lazy Pairing Heap
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
楽しいクォータニオンの世界 田所 第二回Rogyゼミ
楽しいクォータニオンの世界 田所 第二回Rogyゼミ楽しいクォータニオンの世界 田所 第二回Rogyゼミ
楽しいクォータニオンの世界 田所 第二回Rogyゼミ
 
Ppt kasawaki
Ppt kasawakiPpt kasawaki
Ppt kasawaki
 
Goto
GotoGoto
Goto
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求める
 
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
2011年12月9日
2011年12月9日2011年12月9日
2011年12月9日
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
 
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
 
CG2013 02
CG2013 02CG2013 02
CG2013 02
 

Similar to Ninja of Train

Similar to Ninja of Train (9)

U・N・C・O
U・N・C・OU・N・C・O
U・N・C・O
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
PRML 1.6 情報理論
PRML 1.6 情報理論PRML 1.6 情報理論
PRML 1.6 情報理論
 
Icml yomikai 07_16
Icml yomikai 07_16Icml yomikai 07_16
Icml yomikai 07_16
 
各種問題の解説
各種問題の解説各種問題の解説
各種問題の解説
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
 
E : 解説
E : 解説E : 解説
E : 解説
 
ICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったか
 

More from tomerun

More from tomerun (6)

Mastermind
MastermindMastermind
Mastermind
 
Together
TogetherTogether
Together
 
Cheat
CheatCheat
Cheat
 
Cards
CardsCards
Cards
 
Match
MatchMatch
Match
 
Contest
ContestContest
Contest
 

Ninja of Train