Successfully reported this slideshow.
Your SlideShare is downloading. ×

Ninja of Train

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Vinculum
Vinculum
Loading in …3
×

Check these out next

1 of 10 Ad

More Related Content

Slideshows for you (20)

Advertisement

Ninja of Train

  1. 1. Autumn Fest 2012 J Ninja of Train writer: uwi tester: komiya 1
  2. 2. 問題概要 [0,H-1]の窓に対して時間[√D]だけかけてD移動 する動作を繰り返したとき時刻Tまでの動作の総数 を求めよ(語弊あり)。 2
  3. 3. 注意点 ● 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
  4. 4. 考え方 忍者が飛んでいる間は、目標地点の真上で降下し ていると考える。 t=1 t=0 t=2 x 0 4 4
  5. 5. 考え方 車窓の系から見て、Dジャンプすると、移動距離は D-[√D], 降下の最大の高さは[√D]-1になる。 D-[√D]<Hを満たすDについて考えれば良い。 t=1 t=0 t=2 x 0 4-√4 5
  6. 6. 考え方 最大の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
  7. 7. 3. 行列べき乗高速化 [√P]*[√P]ごとのブロックにわけると、各ブロックは 下三角Toeplitz行列になっている。 http://en.wikipedia.org/wiki/Toeplitz_matrix ( ) 1 1 1 1 1 1 1 1 1 7
  8. 8. 3. 行列べき乗高速化 下三角Toeplitz行列同士の乗算はO(N^2)で行えるの で、これを利用して高速化できる。 http://www.codeforces.com/problemset/problem/223/C (類題) 8
  9. 9. 注意点 ● %modが多くなってTLEする場合がある。 ○ 各自工夫を。modを小さくしているのはこれのためです。 ● 数え上げ項の扱い ○ ブロックのサイズは全て同じでしかも下三角Toeplitzじゃ ないといけないので、数え上げ用のブロックを単位行列 のような形にしておく。 9
  10. 10. 余談 ● 最初は忍者が止まったままのものも考えたかっ たが、Toeplitzにならずゲロムズになってしまっ た。 ● rngさんまじぱねぇ ○ ACした2人は0~H-1の中で進む組合せが限定的なこと を利用してDP+Combinationで解いていました。 10

×