51nod 1065 最小正子段和

2021-08-04 15:17:53 字數 641 閱讀 6922

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

比如輸入資料:

4 0 4 1 -1

自己寫一下就知道為啥那樣排序了。

#include 

using namespace std;

typedef long

long ll;

struct node

;const int maxn = 50010;

int num[maxn];

node prefixsum[maxn];

bool cmp(const node& a, const node& b)

int main()

sort(prefixsum,prefixsum+1+n,cmp);

ll der = 1ll<<60;

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

cout << der << endl;

return

0;}

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 最小正子段和

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 最小正子段和

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...