P1220-オフストリート

1つの#include <ビット/ STDC ++ H>
 2  の#defineため_for(iは、B)(INT I =(A); iはB <; iは++)
 3  の#define _rep(I、B)のための- (I; I> B iは=(A)INT)
 4  の#define INF 0x3f3f3f3f
 5  の#define MOD十億七
 6のtypedef 長い LL。
7  使用して 名前空間はstdを、
8  インライン()読み取りllの
 9  {
 10      LL ANS = 0 11      CHAR CH = GETCHAR()、=最後'  ' 12      しばらく(!isdigit(CH))最後の= CH、CH =getchar関数();
13      一方(isdigit(CH))ANS =(ANS << 1)+(ANS << 3)+ CH - ' 0 '、CH = GETCHAR()。
14      であれば(最後== ' - ')ANS = - ANS。
15の     リターンANS;
16  }
 17インラインボイドライト(LLのX)
 18  {
 19の     場合(X < 0)は、x = -x、のputchar(' - ' )。
20      であれば(X> = 10)のライト(X / 10 )。
21      のputchar(Xの%10 + ' 0 ' )。
22  }
 23  構造体ランプ
 24  {
 25      のint POS。
26      int型のパワー;
27  }。
28  int型N、C。
29ランプ[ 53 ]。
30  int型 DP [ 53 ] [ 53 ] [ 2 ]。
31  INTの和[ 53 ] [ 53 ]。
32  のint main()の
 33  {
 34     N = read()は、C = )(読み取ります。
35      _for(I、1、N + 1 36          [I] .POSの=(読み取り)、[I] .power = 読み取ります();
37  
38      _for(I、1、N + 1 39      {
 40          和[i]は[I] = [I] .powerと、
41          _for(J、I + 1、N + 1 42              和[I] [J] =和[I]、[J- 1 ] + [J] .power。
43      }
 44  
45      のmemset(DP、0x3fをはsizeof (DP))。
46      場合(C> = 2 47          DP [C- 1 ] [C] [ 0 ] =([C] .POS - [C- 1 ] .POS)*(和[ 1 ] [C- 1 ] +和[C + 1 ] [N])。
48      であれば(C <= N- 1 49          DP [C] [C + 1 ] [ 1 ] =([C + 1 ] .POS - [C] .POS)*(和[ 1 ] [C- 1 ] +和[C + 1 ] [N])。
50  
51      _for(LEN、3、N + 1 52          _for(L、1、N-LEN + 2 53          {
 54              のint R = L + len- 1 55              DP [L] [R] [ 0 ] =分(DP [L + 1 ] [R] [ 0 ] +([L + 1 ] .POS - [L] .POS)*(和[ 1 ] [L ] +和[R + 1 ] [n]は)
 56              、DP [L + 1 ] [R] [ 1 ] +([R] .POS - [L] .POS)*(和[ 1 ] [L] +和[R + 1 ] [N]))。
57              DP [L] [R] [ 1 ] =分(DP [L] [R- 1 ] [ 0 ] +([R] .POS - [L] .POS)*(和[ 1 ] [L -1 ] + 和[R] [N])
 58              、DP [L] [R- 1 ] [ 1 ] +([R] .POS - [R- 1 ] .POS)*(和[ 1 ] [ 1- 1 ] + 和[R] [N]));
59          }
 60      ライト(MIN(DP [ 1 ] [N] [ 0 ]、DP [ 1 ] [n]を[ 1 ]))。
61      リターン 0 62 }

 

おすすめ

転載: www.cnblogs.com/Asurudo/p/11411863.html