一生懸命一生懸命一生懸命ああああああ〜(うわ後にするとき、彼は絶対死んだ子)
自分の考えをまとめ完了。
まず、以下の3つのプロパティをプッシュします:
1. IとI + 1の両方が、我々はこれら2つの数の交換は(これは私たちの状態遷移に基づいて)新しいシリーズで構成することができます直接、隣接していない場合
2.各数値は、愛する-aiは列の別の番号、逆の山と谷とケースの新シリーズであろう(N + 1)となります
3.ボラティリティシリーズは、対称性を持っています。例:14253は35214となり
セットF [i] [j]は1〜I 1から番号を表す状態jは、種の数です。
J [i]は[J] = F [I] [J-1] F、J-1に隣接していない自然1、に依存
F時に隣接するjおよびJ-1は、[i] [j]は最初のためにI-1の数、J-1を計算することであるが、プログラム、J-1の数は、谷である場合
2、(施設I-1数、谷第J-1、J-1のそれにプログラムの数)(番号を見つけることと等価である(I-1、(( I-1)+1) - ( J-1))まず、J-1のためのプログラムのピークの数です)。
那么[I-1] [IJ-1] [i] [j]がFを= F。
综上所述,f[i][j]=f[i][j-1]+f[]i-1][i-j-1];
水のデータ比較のために、十分なメモリが設けられ、二次元アレイは、ACオフでき起因。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INT F [ 4201 ] [ 4201 ]。 INT のmain() { int型N、P。 CIN >> N >> P; F [ 1 ] [ 0 ] = 1 。 用(int型 iは= 1 ; iが<= N iが++ ){ ため(INT J = 1 ; J <= nであり、j ++ ){ 場合(ij- 1 > = 0 [I] [J] = F [I F) ] [J- 1 ] + F [I- 1] [ij- 1 ]。 F [I] [J]%= P。 } } 長い 長のANS = 0 。 以下のために(int型 iは= 1 ANS =(ANS + F [N] [i])と%iは++; iがn = <)P。 COUT <<(ANS * 2)%のP。 }