zoukankan      html  css  js  c++  java
  • 51nod 1065 最小正子段和

    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个整数

    输出

    输出最小正子段和。

    输入样例

    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
    ",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
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    java 第三次实验作业关于封装
    java String类实验作业随笔
    java 第一次基础实践
    英语四级冲刺笔记---谓语动词的时态下
    英语四级冲刺笔记——语法篇二
    英语四级冲刺笔记——语法篇一
    java面向对象---对象容器
    java--面向对象---访问属性
    java面向对象---对象初始化
    java面向对象---成员变量和成员函数
  • 原文地址:https://www.cnblogs.com/8023spz/p/10908352.html
Copyright © 2011-2022 走看看