層の状態、各意思決定プロセスとして単調
タイトル説明
効果の対象に
我々はすべて知っているように、陳の魚は非常に知的な水生動物です。しかし、彼らは半分になります土地のIQに来ました。
これはないですか?彼らは大きな問題にしています!
nは土地の上に移動するだけ陳魚、k個の車がありますレンタルすることができます。
土地に自由に歩くことができない陳魚、唯一の連続した陳魚を運ぶ車以来。
お互いの深い恨みを持っている陳の魚は、それぞれが陳の魚との不満の価値を持っています。
唯一のi番目とjの魚陳は、値のみの魚の怒りYijをと呼ばれ、Yijを= Yji、Yiiの= 0。
各車両負荷は限定されないが、それぞれが同じ車意志チョン魚の値に恨みを生成します。
もちろん、不満の和のスーパーシニア陳魚ZZPの最小値。
しかし、彼のIQが半減している、私は割り当て方式を考えることはできません。
今、彼はあなたを見つけ、あなたは彼に割り当て陳魚、と不満とANSの最小出力値を手助けする必要があります。
N <= 4000,1≤k個≤min( N、800)
トピック分析
実践:WQS半分
WQS半分のような一見質問、およびその答えは本当に凸関数の形状の関数です。
だから、何よりもまず、テンプレートのタイトルのWQS半分。
1の#include <ビット/ STDC ++ H> 2のtypedef 長い 長LL。 3 のconst int型 MAXN = 4035 。 4 CONST INT INF = 0x3f3f3f3f 。 5 6 int型N、K、L、R。 7 LL [MAXN] [MAXN]、G [MAXN] [MAXN]、F [MAXN]、H [MAXN]、ANS。 8 9 チャー TC(){ 静的 チャー TR [ 1000000 ]、* A = TR、* B = TR。戻り ==のB &&(B =(A = TR)+関数fread(TR、1、1000000?* ++:、STDIN)== b)はEOF ;} 10 の#defineをGETCHAR TC 11 int型リード() 12 { 13 チャー CH = GETCHAR()。 14 INT NUM = 0、FL = 1 。 15 のために(; isdigit(CH)、CH =!GETCHAR()) 16 であれば(CH == ' - ')FL = - 1 。 17 のために(; isdigit(CH)、CH = GETCHAR()) 18 NUM =(NUM << 1)+(NUM << 3)+ CH- 48 。 19 リターン num個の*のFL。 20 } 21 LLチェック(INT w)の 22 { 23 のmemset(F、0x3f3f3f3f、はsizeofのF)。 24 のmemset(H、0x3f3f3f3f、はsizeofのH)。 25 F [ 0 ] = hが[ 0 ] = 0 。 26 のためには、(int型 i = 1 ; iが<= N; I ++ ) 27 のための(INT J = 0 ; J <I、J ++ ) 28 であれば([I]> F [J] + G F [j + 1 ] [i]は+ ||(F [I] == F [J] + G [J + W 1] [I] + W && H [J] + 1 < H [I])){ 29 のF [I] = F [J] + G [j + 1 ] [I] + H、W [I] = hの[J] + 1 。 30 } 31 であれば(H [N] <= K)ANS = F [N] -k * W。 32 リターンH [n]は、 33 } 34 のint main()の 35 { 36 N =(読み取り)、K = 読み取ります(); 37 のためには、(int型 i = 1 ; iがn = <I ++ ) 38 のための(INT J = 1 ; J <= nであり、j ++)[I] [J] = 読み取ります(); 39 のためには、(int型 I = N; I> = 1 ; i-- ) 40 のための(INT J = I; J <= N; J ++ ) 41の G [I] [J] = G [I + 1 ] [J] + G [I] [J- 1 ] -g [I + 1 ] [J- 1 ] + [I] [J]。 42の ANS = INF、L = 0、R = G [ 1 ] [n]は、 43 のために(INT半ば=(L + R)>> 1 ; L <= R半ば=(L + R)>> 1 ) 44 であれば(チェック(MID)<= K)R =半ば1 。 45 他L =ミッド+ 1 ; 46 のprintf(" %LLDする\ n " 、ANS)。 47 リターン 0 ; 48 }
練習2:単調な意思決定
$ N ^ 2 $のDPは、F $である[J] [i]は$ $ I $は最小コスト$ $のJグループにフロント魚を表します。転送に単調で、それぞれ同じ$ jは$について。それは私が層として見なさ$ $で、残りは層の間で転送されます。
一時的に書かないで。
終わり