時間複雜度為n^2的,就是列舉起點和終點。
複雜度為nlogn的,用二分
複雜度為n的,比較巧妙。我們先用s[i]=s[i-1]+a[i],將前n個數的和求出來,然後我們要求的是s[j]-s[i]的乙個最大值,也就是說,s[j]確定了的話,我們只需要去讓s[i]最小就行了。
還可以用dp來做,複雜度也為n
這篇部落格b)
//複雜度為n
#include
#include
using
namespace
std;
#define inf 0x3f3f3f3f
int a[1000],s[1000];
int main()
二分,時間複雜度為nlogn,將分為兩個部分,然後答案要麼是左邊的,要麼是右邊的,要麼是中間的。
#include
#include
#include
#include
#include
using
namespace
std;
int a[1000];
int maxsum(int l,int r)
int main()
//求a^n
#include
#include
#include
#include
#include
using
namespace
std;
int a,n;
long
long ans=1;
long
long erf(int l,int r)
if(l==r) return a;
}int main()
return
0;}
求最大連續陣列
題目描述 給定乙個二進位制陣列,找到含有相同數量的0和1的最長連續子陣列 1 方法一,暴力破解法,獲取字串的子串,n 2個,然後判斷每個串是否符合0,1個數相同,這樣做的時間複雜度為o n 3 稍微優化,如果乙個長度為n的子串滿足條件,那麼這n個元素的和加起來一定 n 2 這樣的話,迴圈增量加就可以...
最大連續和
這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...
最大連續和
求陣列中數的最大連續和,如 1,1,1,1,1 最大連續和為3 一 動態規劃 當我們從頭到尾遍歷這個陣列的時候,對於陣列裡的乙個整數,它有幾種選擇呢?它只有兩種選擇 1 加入之前的subarray 2.自己另起乙個subarray。那什麼時候會出現這兩種情況呢?設狀態為f j 表示以s j 結尾的最...