[7.24] T3学校の交換ゲーム[繰り返し] qbxt警告

データ範囲:N、キー<= 1000;

主題の背景を初めて目には、はっきりとDPのグラフ理論ではありませんが、これは明らかに、グラフ理論ではないので、これはDPです。

次に、DP方法を検討

私たちは、I〜Jのプログラムの数は現在、%キー=数、DPを定義[i] [j]は、i番目に今のDPを示し、

最後の答えがdp [n]が[0]です。

移転を考えてみます。

我々はプログラムの%キー= jの数を追加する前に、いくつかの数字で番号iを決定したい場合は、我々は2つのオプションがあります。

i番目を選択し、我々は最初= i番目の%キーの前に選挙を頼みますか?

INT T = JA [I]%のキー。
            もし(T < 0 
                T + =キー。

然后DP [I] [J] + = DP [I-1] [T]

2. i番目のない直接DP [I] [J] + = DP [I-1]〜[J]を選択します。

次にDP [n]が[0]等を出力します。

<ビット/ STDC ++ H>の#include
 の#define MOD十億七使用名前空間STDを、
インラインint型リード(){
     int型 ANS = 0 チャー最後= ' '、CH = GETCHAR()。
    一方、(CH> ' 9 ' || CH < ' 0 ')最後= CH、CH = GETCHAR()。
    一方、(CH> = ' 0 ' && CH <= ' 9 ')ANS =(ANS << 1)+(ANS << 3)+ CH- '

 
 、CH = GETCHAR()。
    もし(最後== ' - ')ANS = - ANS;
    戻るANSを。
} 

int型キーN、。
INT [ 1010 ];
int型の DP [ 1010 ] [ 1010 ]; 

INT (){メイン
    Nキー=は、=読み取る() 読み取り);
    以下のためにint型 I = 1 [I] = iが++; iが<= N) )(読み取ります。
    DP [ 0 ] [ 0 ] = 1 int型 iは= 1、I ++; iが<= N。){
         ためINT J = 0 ; J <キー、J ++ ){
             int型 T = JA [I]%のキー。
            もし(T < 0 
                T + = キー。
            DP [I] [J] =(DP [I- 1 ] [T] + DP [I- 1 ] [j])%MOD。
        } 
    } 
    のprintf(" %dの"、DP [n]が[ 0 ]%のMOD)。
    リターン 0 ; 
}

終わり-

おすすめ

転載: www.cnblogs.com/zhuier-xquan/p/11237067.html