再帰的シーケンス--cf1204E(良いタイトル)

/ * 
番目、I 1の結果を表す[I] [J] DPによって見かけJ-1 
DP [I] [J] DPにより[I-1]〜[J ] とDP [I]、[J-1 ] 転送
    即ちDP [I] [j]は、すべての配列に対応する、DPに先行することができる[I-1]〜[J ] 1又はDP [I]、[J-1 ] が前に-1 、
         統計ので、容易にフロントが追加され
          
        、考察1は、フロントに加え、次いで、いずれかの(I-1、j)が配置されている貢献+ 1、C(I-1 + jを、j)を
        追加することを検討-1貢献-1、いくつかの(I、J-1)が配置されているため、フロントには、
            考えられない、シーケンスのプレフィックス番号1は、答えは常に0以上である必要があります、必要-1が存在しない

の前処理などは、シーケンス番号
    F [i]が[j]は、I-1を示し、J -1プレフィックスの数-1より大きい、シーケンス番号
    、ソースF [i] [j]は2つのFを有する[I] [ J-1]、F [I -1] [j]の
    各配列について[I] [j]は[I] [J-1 fを作製することができるからf ] -1またはFを添加した後[1- 1]〜[J] 1のいずれかで行った
初期値F [O] [J] = 1、F [I] [J] = 0、I> Jの
 * /
#include <ビット/ STDC ++ H>
 の#define N 2010
 の#define MOD 998244853
 の#define(; iが=(y)を<++ I I =(X)INT)のためのための式(I、x、y)は
 の#define ROF (I、x、y)のための式(I =(X)がINT; I> =(Y); - I)の
 使用 名前空間STDを、
 
INT C [N << 1 ] [N << 1 ]、DP [N] [N]、K [N] [N]。
 
インラインint型の追加(int型のx、int型の Y){ リターン X + Y> = MOD X + Y-MOD:X +?Y。} 
インラインINT MNS(int型のx、int型の Y){ 戻り XY < 0のxy + MOD:XY }
 int型メイン(){
     int型N、M。
    scanf関数(" %d個の%のD "、&​​N、&M)。
    (私用0、N + M){ 
        C [i]が[ 0 ] = 1 ; 
        (Jについては1、I)C [I] [J] =追加(C [I- 1 ] [J]、C [I- 1 ] [J- 1 ])。
    }    
    (Iについて1、M)K [ 0 ] [I] = 1 
    (Iについては1、N)(J、I、M)K [i]は[J]のため=(K [1-追加1 ] [J]、K [i]は[J- 1 ])。
    (Iについて1、N)DP [I] [ 0] = I。
    (Iについて1 、N)
        (Jについて1 、M)
            DP [I]、[J](DPを(追加= [I- 1 ] [J]、C [I + J- 1 ] [J]) 、MNS(DP [I]、[J- 1 ]、MNSは(Cは[iが+ J- 1 ] [I]、K [i]は[J- 1 ])))。
    COUT << DP [n]は[M]。
}

 

おすすめ

転載: www.cnblogs.com/zsben991126/p/11517365.html