日記この記事を自分なりに理解したメモ問題では1-indexになっているが0-indexで扱うとする。以下の数列Aの第n項を求めろという問題になる。蟻本p114)がこれでは当然TLEする。きたまさ法と呼ばれる線形K項間漸化式の第n項をO(K^2logN)で求めるアルゴリズムを用いる。関数f(m)を数列xを返す関数とする。数列xはA[m]=x[0]A[0]+x[1]A[1]+...+x[k-1]A[k-1]を満たすとする。f(n)を求めることができればA[n]も求まる。f(m)からf(m+1)、f(2m)を高速に求めることができればダブリング・繰り返し二乗法の要領で計算することでO(logn)回の計算でf(n)が求まる。f(m)からf(m+1)は以下の要領でO(k)で求められる。(x[k-2]+x[k-1])A[k-1]f(m)からf(2m)はO(k^2)で求められる。O(k^2)かけて上記と同じ要領でf(m),f(m+1),...,f(m+k-1)を求める。f(m)が返す数列のi番目をf(m,i)と書くことにするとA[2m]は以下のように書ける。...)A[k-1]以上のようにf(m)からf(m+1)、f(2m)を計算することがO(k^2)でできるため第n項をO(k^2logn)で求めることができた。bitDPで数え上げる。Close月別アーカイブリンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!ferin_techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。