zoukankan      html  css  js  c++  java
  • 51Nod

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050

    解题思路:

      It's so beautiful !

      循环数组的最大子段 [l, r] 只有两种可能:

      1、0 < l <= r <= N,这一部分就是单纯地求数组的最大子段和;

      2、0 < r < l <= N,这一部分可以这么想:既然这个循环子段最大,那么数组剩下的连续子段 [r+1,l-1] 应该就是最小子段,那么我们只要求出最小子段和,再用总和减去这个最小子段和,得到的肯定就是最大循环子段和。

    AC代码:

    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    typedef long long ll;
    const int maxn=50000+3;
    ll A[maxn],dp[maxn];
    int main(){
        int N;
        scanf("%d",&N);
        bool zero=true;
        for(int i=1;i<=N;i++){
            scanf("%lld",&A[i]);
            if(A[i]>=0) zero=false;
        }
        if(zero)    printf("0
    ");
        else{
            dp[1]=A[1];
            ll ans=dp[1];
            for(int i=2;i<=N;i++){
                dp[i]=max(A[i],A[i]+dp[i-1]);
                if(dp[i]>ans)   ans=dp[i];
            }
            printf("%lld
    ",ans);
        }
    
        return 0;
    }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    VS2010、SQL Server 2008和SQL Server 2012安装详解
    IIS服务寄宿
    C#中错误:不包含适合于入 口点的静态“Main”方法 的解决方法
    硬件的一些性能指标
    SATA SAS SSD 硬盘介绍和评测
    mysql数据库锁定机制
    mysql日志设置优化
    MySQL硬件瓶颈分析
    可扩展性设计之数据切分
    硬件环境对系统性能的影响
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7764155.html
Copyright © 2011-2022 走看看