ペンダントは、番号に従ってソートし、次に同じよう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を返します。 }