BZOJ 4247:装飾品、動的プログラミング

ペンダントは、番号に従ってソートし、次に同じようDPを行います。 

コード: 

<ビット/ STDC ++ H>の#include        
の#define LL長い長
の#define N 2003    
の#define setIO(S)freopenは(S ".IN"、 "R"、標準入力)
名前空間stdを使用。
LL F [N]。        
構造体ノード{ 
    int型A、B。     
} S [N]。   
ブールCMP(ノードX、ノードY){ 
    戻りXA> YA。   
} 
int型のmain()
{ 
    // setIO( "入力")。  
    int型I、J、N。   
    LL ANS = 0。   
    memsetの(F、-0x3f、はsizeof(F))、F [0] = F [1] = 0;          
    scanf関数( "%のD"、&N);   
    {(; <I = N ++ I I = 1の)のため
        のscanf( "%D%D"、&S [i]は.A、&S [i]は.B)。  
    } 
    ソート(S + 1、S + 1 + N、CMP)。   
    I = 1の(ための;
            { - (J; J> = 1 J = N)のため
                のint V =分(J + S [i]の.A-1、N)。      
                F [V] = MAX(F [V]、F [J] + S [i]の.B)。
                ANS = MAX(ANS、F [V])。    
            } 
        }   
        他{     
            ため(J = 1; J <= N; ++ j)はF [J-1] = MAX(F [J-1]、F [J] + S [i]の.B)、ANS = MAX(ANS、F [J-1])。   
        }           
    } 
    のprintf( "%のLLD \ n"は、ANS)。
    0を返します。
}

  

おすすめ

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