Luogu 1373 DP FOMAカードを逃げるために、大小の和

そこ操作を法、それほど差は、金型の意味での直接維持することができます。 

コード: 

#include <ビット/ STDC ++ H>   
に#define M 16   
の#define N 801     
の#defineっ長い長
の#define MOD十億七   
の#define setIO(S)freopenは(S ".IN"、 "R"、STDIN)
名前空間stdを使用。
int型V [N] [N]。   
INT DP [N] [N] [M] [2]。      
ボイド追加(INT&、int型B)
{ 
    LL C =(1LL * A + 1LL * B + MOD)%MOD。   
    =(INT)C。   
} 
int型のmain()
{ 
    int型N、M、K、I、J。
    // setIO( "入力");         
    scanf関数( "%D%D%D"、&N、&M&K)、++、K。     
    用(i = 1; iは= N <; ++ I)
        のために(J = 1; J <= M; ++ j)をscanf関数( "%のD"、&V [I] [J])。      
    用(i = 1; iは= N <; ++ I)
        J <= M;(J = 1            
    (I ++; iが<= N I = 1)のために
    { 
        (; J <= M ++ J J = 1)のために
        { 
            ため(++ D INTさd = 0; D <K)
            { 
                (IF I-1> = 1)
                {         
                    (DP [I] [J] [D] [0]、DP [I-1]〜[J] [(DV [I] [J] + K)%のK] [1を追加]);   
                    (DP [I] [J] [D] [1]、DP [I-1]〜[J] [(D + V [I] [J])%のK] [0])を追加します。             
                } 
                IF(J-1> = 1)
                {    
                    (DP [I] [J] [D] [0]、DP [I]、[J-1] [(DV [I] [J] + K)%Kを追加] [1])。   
                    (DP [I] [J] [D] [1]、DP [I]、[J-1] [(D + V [I] [J])%のK] [0])を追加します。     
                }
            } 
        } 
    } 
    int型ANS = 0。   
    用(i = 1; iは= N <; ++ I)
    { 
        ため(J = 1; J <= M; ++ j)の
            追加(ANS DPを[I] [J] [0] [1])。      
    }
    printf( "%d個の\ n"、ANS)。   
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/guangheli/p/11582504.html