難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) Lv.5.5 (2票)

投票の分布
  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.51票
  6. Lv.61票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Sum of Binomials

作成者 hirayuu_soj

難易度(作成者設定) Lv.5

難易度(投票) Lv.5.5 (2票)

実行時間制限
2 秒
メモリ制限
512 MiB

解説

DPn,iDP_{n,i} を、N=n,R=iN=n,R=i のときの答えとします(MM は与えられたものを使います)。

これは、以下のように計算できます。

  • DP1:DP_{1}: (1,0,…,0)(1,0,\dots,0) です。
  • DP2n,k:DP_{2n,k}: ∑(i+j) mod M=kDPn,iDPn,j\displaystyle \sum_{(i+j)\bmod M=k} DP_{n,i}DP_{n,j} です。DPnDP_n がわかっているとき、DP2nDP_{2n} を O(M2)O(M^2) の時間計算量で計算できます。
  • DPn+1,k:DP_{n+1,k}: DPn,k+DPn,(k−1) mod MDP_{n,k}+DP_{n,(k-1)\bmod M} です。DPnDP_n がわかっているとき、DPn+1DP_{n+1} を O(M)O(M) の時間計算量で計算できます。

繰り返し二乗法と同じ要領で、O(M2log⁡N)O(M^2\log N) の時間計算量で DPNDP_N を計算できます。

なお、DP2n,kDP_{2n,k} を高速な畳み込みを用いて計算することで O(Mlog⁡Mlog⁡N)O(M\log M\log N) の時間計算量で答えを求めることもできます。

ユーザー解説

ユーザー解説を書く

ユーザー解説はまだありません。