zoukankan      html  css  js  c++  java
  • 51nod 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,-2。-1,5,-2,-1,序列和为1,是最小的。
     
    Input
    第1行:整数序列的长度N(2 <= N <= 50000)
    第2 - N+1行:N个整数
    Output
    输出最小正子段和。
    Input示例
    8
    4
    -1
    5
    -2
    -1
    2
    6
    -2
    Output示例
    1
    相关问题
     
    前缀和 + 排序 
    #include <algorithm>
    #include <cstdio>
    
    using namespace std;
    int n;
    long long minx=1e18;
    long long min(long long a,long long b)
    {
        return a>b?b:a;
    }
    struct node
    {
        long long zdh;
        int pos;
        bool operator<(node a)const
        {
            if(zdh!=a.zdh) return zdh<a.zdh;
            else return pos<a.pos;
        }
    }sum[50050];
    int main()
    {
        scanf("%d",&n);
        for(int a,i=1;i<=n;i++)
        {
            scanf("%d",&a);
            sum[i].zdh=sum[i-1].zdh+a;
            sum[i].pos=i;
        }
        sort(sum+1,sum+1+n);
        if(sum[1].zdh>=1) minx=sum[1].zdh;
        for(int i=2;i<=n;i++)
        {
            if(sum[i].zdh>=1) minx=min(minx,(long long)sum[i].zdh);
            if(sum[i].pos>sum[i-1].pos&&sum[i].zdh-sum[i-1].zdh>=1)
            minx=min(minx,sum[i].zdh-sum[i-1].zdh);
        }
        printf("%lld",minx);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Django框架之数据库ORM框架
    Django模块之jinja2模版
    Django框架之中间件MiddleWare
    Django框架之类视图
    Django框架之session
    Django框架之cookies
    Django框架之给客户端返回数据
    Django框架之获取客户端发送的数据
    题解 UVA11475 【Extend to Palindrome】
    题解 P3964 【[TJOI2013]松鼠聚会】
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6746092.html
Copyright © 2011-2022 走看看