zoukankan      html  css  js  c++  java
  • USACO2011 Jan:公司利润

    简要题意:

      奶牛开了家公司,已经连续运作了N 天。它们在第i 天获得了Ai元的利润,不过有些天是亏钱的,这种情况下利润就是一个负数。约翰想为它们写个新闻,吹嘘它们的惊人业绩。请你帮助他选出一段连续的日子,长度不限,但至少要包括一天,使得公司在这段日子里的利润之和最大。


    输入格式:

      • 第一行:单个整数N,1 ≤ N ≤ 10^5

      • 第二行到第N + 1行:第i + 1行有一个整数Ai,−1000 ≤ Ai ≤ 1000


    输出格式:

      • 单个整数:表示最大的利润之和


    样例输入:

    7
    -3
    4
    9
    -2
    -5
    8
    -3


    样例输出:

    14


    样例解释:

      选择第三天到第六天,4 + 9 − 2 − 5 + 8 = 14


    题解:

      这道题求的是最大连续子段和,很经典的题,也是贪心做法,一旦利润和为负数则立即停止往后加,以免影响后面的最大和


    参考代码:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a[110000];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        int sum=0,ans=-999999999;
        for(int i=1;i<=n;i++)
        {
            if(sum<0) sum=0;
            sum+=a[i];
            if(ans<sum) ans=sum;
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    P3478 [POI2008]STA-Station
    P2015 二叉苹果树
    P2014 选课 (树型背包模版)
    求树的每个子树的重心
    求树的直径
    Javascript--防抖与节流
    JavaScript中call和apply的区别
    解决谷歌浏览器“此Flash Player与您的地区不相容,请重新安装Flash”问题(最新版)
    matlab实验代码(总)
    表达式树
  • 原文地址:https://www.cnblogs.com/Never-mind/p/7759785.html
Copyright © 2011-2022 走看看