n個整數組成的序列a[1],a[2],a[3],…,a[n],從中選出乙個子串行(a[i],a[i+1],…a[j]),使這個子串行的和》0,並且這個和是所有和》0的子串行中最小的。
例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和為1,是最小的。
第1行:整數序列的長度n(2 <= n <= 50000)
第2 - n+1行:n個整數
輸出最小正子段和。
84-1
5-2-12
6-2
1
思路:
先求序列字首和並標記序列號,再將字首和進行排序。逐一比較大小相鄰的兩個數,當位置關係同大小關係一樣,則說明區間 [ i,j ]和為正,取所有的區間中的最小值。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define endl "\n"
const
int maxn = 50000+10;
struct numa[maxn];
bool cmp(num a,num b)
sort(a,a+n+1,cmp);
int flag=1;
sum=0;
for(int i=1;i<=n;i++)else}}
cout
0;}
51nod 2級演算法題 1007
基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。第1行 乙個數n,n為正整數的數量。第2 n 1行,n個正...
51nod 2級演算法題 1092
基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可以新增3個變為 ab...
51nod 2級演算法題 1279
有一口井,井的高度為n,每隔1個單位它的寬度有變化。現在從井口往下面扔圓盤,如果圓盤的寬度大於井在某個高度的寬度,則圓盤被卡住 恰好等於的話會下去 盤子有幾種命運 1 掉到井底。2 被卡住。3 落到別的盤子上方。盤子的高度也是單位高度。給定井的寬度和每個盤子的寬度,求最終落到井內的盤子數量。如圖井和...