Codeforces 33C.Wonderfulランダム合計

質問の意味:

配列へのあなたには、いくつかの接頭辞を置くことができると、-1を掛けた後、接尾辞と-1を掛け、そこに最大の一連の操作の後に、接尾語が続くプレフィックスの間のオーバーラップすることとどのくらいに尋ねることができます

アイデア:

私たちは、最初に乗るために二回、重複を検討-1、同じのすべての重複部分を、プログラムに対する答えが重複部分を持たないように

我々は、操作後のアレイとされ、すべての要素和、想定中期から反対と考察がSであると仮定する(合計- - S)+ S = 2 * S -合計

そこで問題は、サブシーケンスの問題を見つける最大に変換されます

書式#include <iostreamの> 
の#include <アルゴリズム>
  使用して 名前空間はstdを、
 const  int型 MAXN = 1E5 + 10 int型[MAXN]。
 int型のmain()
 { 
     int型 N、和= 0 
     scanf関数(" %のD "、&N)
     以下のためにINT iが= 1 ; <I = N; I ++ ){ 
         scanf関数(" %のD "、および[I])。 + = [I]。
     } 
     INT MX、CNT = 0 以下のためにINT iが= 1 ; I <= N; I ++ ){ 
         CNT + = A [i]は、
         もし(CNT < 0)、CNT = 0 
         MX = MAX(MX、CNT)。
     } 
    COUT << 2 * MX-和<< ENDL。
    リターン 0 ; 
 }

 

おすすめ

転載: www.cnblogs.com/overrate-wsj/p/12285245.html