差動貪欲+:INCDECシーケンス

オリジナルタイトル

タイトル説明
A1、A2、...、ANA1、行の長さnの番号が与えられ 、A2、... それぞれが間隔[L、R]、[L、選択することができる r]を、 この範囲内のインデックスの数を私たちは、インクリメントまたはデクリメントされます。

どのように多くの操作は同じであり、どのように多くの最小数は、列の結果の数があり得ることを確実にするための前提の下で得られた少なくともすべての列のカウント見つける必要があります。

入力フォーマット
入力の正の整数nの最初の行。

次のn行、入力整数、I + 1行目の各ラインは、整数でaiを表します。

出力フォーマット
動作の出力の最小番号の最初の行の。

どのように多くのセカンドライン出力、最終的な結果を得ることができます。

データ範囲
0 <n≤1050<n≤105
0≤ai<21474836480≤ai<2147483648
入力サンプル:

4
。1
。1つの
2
2
出力サンプル:

1
2

アイデア:最初に、である。この問題に焦点を当て、区間[L、R]、[L、 R] 変更操作。この質問は、動作特性を変更するための目的がありますので、それは+ X + Xよりだけ、というだけプラスまたはマイナス1である、である、また私たちは、高度なデータ構造を使用する必要がないように、-x-xは、ツリーラインフェンウィックの木が、唯一の差を使用する必要がすることができます。
差分:差分が定義されている、あなたは「アルゴリズムコンテストアドバンストガイド」P21ページを参照してくださいすることができます。
初版との間の差が、定義についてここで述べていない:列Aの所与の数については、それは差スコア列Bとして定義され、B [1] = [ 1]、B [i]は=愛-AI-1( 2 <= iが<= N) B [1] = [1]、B [i]は=愛-AI-1(2 <= iが= N)<
のみ前記特性、即ちインターバル配列[ L、R]、[L、R ] プラスD、アラルら、アル+ 1 ....、すなわちアル+ 1 ... ArはDに結合され、それはシーケンスB、B1の差は実際には+ D、のBr + 1-DBL +の D、のBr + 1-Dは、 他の全ての位置が変更されません。
この質問は、我々は唯一、すべて同じ数のシーケンスを必要とするためので、私たちは、この非常に便利なプロパティを使用することができている、と我々は対象を変換することができるようにつまり、意志、具体的にそれが何であるかをこれらのプログラムを気にしないでください+ 1の配列、-1 + 1、1動作、同じ配列、標的B2へ、...、BnB2、...、よう Bnは全て0になることができ、すなわち、配列は全て等しいです。そして、n個のB1B1ある結果のシーケンス、
貪欲:私たちは性質上言ってきたので、我々はすべてのBjBiとBiとBjに、2 <= I、J選択することができます <= N2 <= I、Jを<= N、及びこれら二つの数字、正、負、正または負であれば、我々はB配列にあるので、2であることが理由としてペアリング〜nが0であるので、負、正の還元の増加、それは、ゼロ状態の目標に到達するための最速の方法です。
BKBKのペアリングを数えることができない人のために変更することが、これらの二つの数字は影響しません、B1B1またはBnBnを選択することができます。
だから我々は、質問のヘッド答え最小オペランド分(P、Q)+ ABS(P-Q)である= MAX(P、Q)分(P、Q)+ ABS(P-Q)=最大に来て(P、Q)、次いで最終的なABS(P-Q)の配列+ 1abs(P-Q)+1場合があります。pは、qが負と配列B CKSとBのシーケンスの数であります

著者:秦の海岸ライト薄暗い
リンクします。https://www.acwing.com/solution/acwing/content/816/
出典:AcWing

コード:•は、長い長い開くには!(どのように言って、なぜ私に聞かないでください)

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
CONST int型N = 1E5 + 10。
長い長い[N]、[N] B、N。
int型のmain(){ 
	のstd ::イオス:: sync_with_stdio(偽); 
	cinを>> N; 
	長い長いzans = 0、ファン= 0、ANS1、ANS2。
	以下のために(INT i = 1; iが= <N; iは++)CIN >> [I]。
	[i]は= B [I] -a [I-1]のために(iは++; iが<= N I = 1 INT)。
	(I 2 = int型;方には<= N; iが++)
	(B [i]の場合> 0)zans + = B [i]は、
	他のファン+ = B [i]は、
	ANS2 = ABS(ファン+ zans)。
	ファン= ABS(ファン)。
	ANS1 = MAX(ファン、zans)。
	coutの<< ANS1 <<てendl << ANS2 + 1; 
	0を返します。
}

  

おすすめ

転載: www.cnblogs.com/myhnb/p/11248066.html