説明に【APIO2014]配列

最終的な答えは順序に関係なく、形のxy + yz平面+ XZを見つけました

最適化の見かけのスロープDP

ピット分母がINF 0としてスロープでないとき-INFように、すなわち直接分岐間違っについて

なぜなら、この小さなエッセイチューン午後のLvはピット......

スロープの最適化の力、深い理解(霧

書式#include <iostreamの> 
の#include <cstdioを>
 使用して 名前空間はstdを、

const  int型 MAXN = 100005 ;
const  int型 MAXM = 205 ;
int型nは、mは、[MAXM] [MAXN】予め、Q [MAXN]。
長い 長い int型S [MAXN]、DP [MAXM] [MAXN]。

ボイド do_it(INT X){
     int型 LL = 1、RR = 0 、I、Y、Z。
    ため(I = X- 1 ; iが<= N; iは++ ){ 
        Y = Q [LL]。Z = Q [LL + 1 ]。
        同時に(LL <RR &&  
         ((DP [X - 1 ] [Y] -s [Y] * S [Y]) - (DP [X- 1 ] [Z] -s [Z] * S [Z])
           < S [i]は*(S [Z] - S [Y]) 
           || S [z]は== S [Y])
        ){ 
            LL ++ 
            Y = Q [LL]。Z = Q [LL + 1 ]。
        } 
        であれば(LL <= RR){ 
            Y = Q [LL]。
            DP [X] [I] = DP [X- 1 ] [Y] + S [Y] *(S [I] - S [Y])。
            事前[X] [I] = Y。
            // COUT << LL <<」 '<< RR <<'; '<< Y <<'
            // COUT << DP [X] [I] << ENDL。
        } 
        、Y = Q [RR- 1 ]。Z = Q [RR]。
        一方(LL <RR &&  
         ((((DP [X - 1 [Y] -s [Y] * S [Y]) - (DP [X-] 1 ] [Z] -s [Z] * S [Z ]))*(S [I] - S [Z]) 
           >((DP [X- 1 ] [Z] -s [Z] * S [Z]) - (DP [X- 1 ] [I] - S [I] * S [I]))*(S [Z] - S [Y]) 
          !&& S [Z] = S [Y])|| S [I] == S [Z])
        ){ 
            RR - ; 
            Y = Q [RR- 1 ]。Z = Q [RR]。
        } 
        RR ++; 
        Q [RR] = I。
    } 
    を返します
} 

int型のmain(){
     int型I、T。
    CIN >> N >> M。
    M ++ ;
    (i = 1 ; iが<= N; iは++ ){ 
        CIN >> S [i]は、S [i]は+ = S [I- 1 ]。
    } 
    
    のための(I = 2 ; I <= M; iは++)do_it(I)。// coutの<<てendl; 
    
    COUT << DP [M] [N] << ENDL。
    T = N。
    (; I> = I = M 2 ; i-- ){
        coutの <<前の[i]を[T] << '  ' ; 
        T = あらかじめ[I] [T]。
    } 
    COUT << ENDL。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/crraphael/p/11364414.html