Ninja of Train

T
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
1 of 10

Recommended

Vinculum by
VinculumVinculum
Vinculumtomerun
317 views9 slides
わかりやすい変数名をつけよう by
わかりやすい変数名をつけようわかりやすい変数名をつけよう
わかりやすい変数名をつけようsuhe-doi
522 views13 slides
Sanpo by
SanpoSanpo
Sanpooupc
908 views15 slides
Bitmap by
BitmapBitmap
Bitmaptomerun
305 views9 slides
AtCoder Regular Contest 030 解説 by
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Inc.
9.9K views25 slides

More Related Content

What's hot

wq-2. 待ち行列 by
wq-2. 待ち行列wq-2. 待ち行列
wq-2. 待ち行列kunihikokaneko1
445 views59 slides
SICP by
SICPSICP
SICPS W
470 views10 slides
ディジタル信号処理 課題解説 その5 by
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5noname409
8.3K views31 slides
RUPC2014_Day2_C by
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_Cs1190048
249 views8 slides
最適化の手前の数学 by
最適化の手前の数学最適化の手前の数学
最適化の手前の数学俊介 後藤
2K views30 slides

What's hot(20)

SICP by S W
SICPSICP
SICP
S W470 views
ディジタル信号処理 課題解説 その5 by noname409
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5
noname4098.3K views
RUPC2014_Day2_C by s1190048
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_C
s1190048249 views
最適化の手前の数学 by 俊介 後藤
最適化の手前の数学最適化の手前の数学
最適化の手前の数学
俊介 後藤2K views
Lazy Pairing Heap by Kei Hibino
Lazy Pairing HeapLazy Pairing Heap
Lazy Pairing Heap
Kei Hibino632 views
AtCoder Regular Contest 049 解説 by AtCoder Inc.
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.9.7K views
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説 by AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.3.4K views
楽しいクォータニオンの世界 田所 第二回Rogyゼミ by rogy01
楽しいクォータニオンの世界 田所 第二回Rogyゼミ楽しいクォータニオンの世界 田所 第二回Rogyゼミ
楽しいクォータニオンの世界 田所 第二回Rogyゼミ
rogy017.7K views
Ppt kasawaki by harmonylab
Ppt kasawakiPpt kasawaki
Ppt kasawaki
harmonylab259 views
Goto by oupc
GotoGoto
Goto
oupc421 views
AtCoder Regular Contest 045 解説 by AtCoder Inc.
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
AtCoder Inc.7.1K views
3次元の凸包を求める by abc3141
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求める
abc31414.8K views
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム by Tasuku Soma
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
Tasuku Soma1.6K views
UTPC2012 - K by omeometo
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
omeometo303 views
2011年12月9日 by nukaemon
2011年12月9日2011年12月9日
2011年12月9日
nukaemon316 views
Rでのtry関数によるエラー処理 by wada, kazumi
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
wada, kazumi7.5K views
(define)なしで再帰関数を定義する by blackenedgold
(define)なしで再帰関数を定義する(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold2.4K views

Similar to Ninja of Train

U・N・C・O by
U・N・C・OU・N・C・O
U・N・C・Otomerun
515 views7 slides
130323 slide all by
130323 slide all130323 slide all
130323 slide allikea0064
291 views63 slides
PRML 1.6 情報理論 by
PRML 1.6 情報理論PRML 1.6 情報理論
PRML 1.6 情報理論sleepy_yoshi
9.4K views61 slides
Icml yomikai 07_16 by
Icml yomikai 07_16Icml yomikai 07_16
Icml yomikai 07_16Yo Ehara
3.4K views29 slides
各種問題の解説 by
各種問題の解説各種問題の解説
各種問題の解説tozan gezan
1.9K views16 slides

More from tomerun

Mastermind by
MastermindMastermind
Mastermindtomerun
572 views25 slides
Together by
TogetherTogether
Togethertomerun
927 views6 slides
Cheat by
CheatCheat
Cheattomerun
255 views4 slides
Cards by
CardsCards
Cardstomerun
340 views9 slides
Match by
MatchMatch
Matchtomerun
217 views4 slides
Contest by
ContestContest
Contesttomerun
201 views3 slides

More from tomerun(6)

Mastermind by tomerun
MastermindMastermind
Mastermind
tomerun572 views
Together by tomerun
TogetherTogether
Together
tomerun927 views
Cheat by tomerun
CheatCheat
Cheat
tomerun255 views
Cards by tomerun
CardsCards
Cards
tomerun340 views
Match by tomerun
MatchMatch
Match
tomerun217 views
Contest by tomerun
ContestContest
Contest
tomerun201 views

Ninja of Train