1065 最小正子段和(字首和,暴力)

2021-09-27 07:06:00 字數 592 閱讀 2981

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

-15-2-126

-2輸出樣例

1

#includeusing namespace std;

struct nodea[50010];

bool cmp(node x,node y)

sort(a,a+n+1,cmp);//不可以從a+1開始

for(int i=1;i<=n;i++)

if(a[i].sum-a[i-1].sum>0&&a[i].flag>a[i-1].flag)

minn=min(minn,a[i].sum-a[i-1].sum);

cout

}

字首和 二分 1065 最小正子段和

1 秒131,072 kb 20 分 3 級題 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行 整數...

51nod 1065 最小正子段和

1065 最小正子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 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...

51nod 1065 最小正子段和

求字首和,然後公升序排序。排序後相鄰兩個字首和只差越小,比如prefixsum i 1 假設他原來座標是n,和prefixsum i 假設他原來座標是m,他倆差越小,則表明區間 m,n 之間的正整數和越小,前提是n m。還有排序的時候如果有多個字首和相等,則把下標大的放在前邊,下標小的放後邊。比如輸...