水果店裡有 nn個水果排成一列。店長要求顧客只能買一段連續的水果。
小陽對每個水果都有乙個喜愛程度 aiai,最終的滿意度為他買到的水果的喜歡程度之和。
如果和為正(不管是正多少,只要大於 0 即可),他就滿意了。
小陽想知道在他滿意的條件下最多能買多少個水果。
你能幫幫他嗎?
第一行輸入乙個正整數 n,表示水果總數。
第二行輸入 n 個整數 aiai,表示小陽對每個水果的喜愛程度。
一行乙個整數表示結果。(如果 1 個水果都買不了,請輸出 0)
#includeusing namespace std;
int dp[2000005];
int tree[2000005<<2];
void build(int root,int l,int r)
int mid=l+r>>1;
build(root<<1,l,mid);
build(root<<1|1,mid+1,r);
tree[root]=min(tree[root<<1],tree[root<<1|1]);
}int query(int root,int l,int r,int q)
build(1,1,n);
int ans=0;
for(int i=1;i<=n;i++) }
cout
}
動態求連續區間和 線段樹 模板
給定 n 個數組成的乙個數列,規定有兩種操作,一是修改某個元素,二是求子數列 a,b 的連續和。輸入格式 第一行包含兩個整數 n和 m,分別表示數的個數和操作次數。第二行包含 n個整數,表示完整數列。接下來 m行,每行包含三個整數 k,a,b k 0,表示求子數列 a,b 的和 k 1,表示第 a ...
dp m段連續區間和
問題描述 最大m子段和問題 給定由 n個整數 可能為負整數 組成的序列a1,a2,a3,an,以及乙個正整數 m,要求確定序列 a1,a2,a3,an的 m個不相交子段,使這m個子段的總和達到最大,求出最大和。用dp i j 來表示在前j個數中,以a j 結尾並分為i段的最大和。dp i j max...
連續區間最大和問題
連續區間最大和問題指的是在給定的一串串行中找出和最大的連續區間。解決這類問題有下面五種方法 1.o n 3 暴力列舉 這種方法就不需要多說了,最簡單的方法,但複雜度很高,資料量大時不可取。2.o n 2 預處理 列舉 這種方法無非是在上一種方法的基礎上做些優化。sum i 表示從1 i 這段區間的和...