标签:board i+1 并且 amp color class bin algorithm NPU
第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N+1行:N个整数
输出最小正子段和。
8
4
-1
5
-2
-1
2
6
-2
1
计算前缀和,每次计算完一个前缀和找前面计算过的比自己小的且相差最小的进行比较最小差。
可以用set,也可以排序。
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <set> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; int n; int d; ll sum; int main() { while(~scanf("%d",&n)) { ll ans = inf; set<ll> s; s.insert(0); for(int i = 1;i <= n;i ++) { scanf("%d",&d); sum -= d; if(*s.rbegin() > sum) ans = min(ans,*s.upper_bound(sum) - sum); s.insert(sum); } printf("%lld\n",ans); } return 0; }
#include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; typedef pair<ll,int> pa; int n,d; ll sum; pa p[50000]; int main() { while(~scanf("%d",&n)) { ll ans = inf; for(int i = 1;i <= n;i ++) { scanf("%d",&d); sum += d; p[i] = pa(sum,i); } p[0] = pa(0,0); sort(p,p + n + 1); for(int i = 1;i <= n;i ++) { if(p[i].second > p[i - 1].second && p[i].first > p[i - 1].first) ans = min(ans,p[i].first - p[i - 1].first); } printf("%lld\n",ans); } return 0; }
标签:board i+1 并且 amp color class bin algorithm NPU
原文地址:https://www.cnblogs.com/8023spz/p/10908352.html