zoukankan      html  css  js  c++  java
  • 最大子段和

    送分题(songfen)
    Time Limit:1000ms Memory Limit:128MB

    题目描述
    LYK喜欢干一些有挑战的事,比如说求区间最大子段和。它知道这个题目有O(n)的做法。于是它想加强一下。
    也就是说,LYK一开始有n个数,第i个数字是ai,它找来了一个新的数字P,并想将这n个数字中恰好一个数字替换成P。要求替换后的最大子段和尽可能大。
    LYK知道这个题目仍然很简单,于是就扔给大家来送分啦~
    注:最大子段和是指在n个数中选择一段区间[L,R](L<=R)使得这段区间对应的数字之和最大。

    输入格式(songfen.in)
    第一行两个数n,P。
    接下来一行n个数ai。

    输出格式(songfen.out)
    一个数表示答案。

    输入样例
    5 3
    -1 1 -10 1 -1

    输出样例
    5

    样例解释
    将第三个数变成3后最大子段和为[2,4]。

    数据范围
    对于30%的数据n<=100。
    对于另外30%的数据ai,P>=0。
    对于100%的数据n<=1000,-1000<=ai,P<=1000。

    O(n)来求最大子段和

    #include<iostream>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int n,P,a[1009],ans;
    int main()
    {
        scanf("%d%d",&n,&P);
        for(int i=1;i<=n;i++)
         scanf("%d",&a[i]);
        for(int x=1;x<=n;x++)
        {
            int s=0;
            for(int i=1;i<=n;i++)
            {
                if(i==x) s+=P;//枚举的替换的第x个 
                else s+=a[i];
                if(s<0) s=0;
                ans=max(ans,s);
            }
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    WPF DataGrid列放入Btn整理
    WPF XAML颜色变换整理
    摄影
    Markdown学习
    leetcode 54 螺旋矩阵
    leetcode 120 三角形最小路径和
    LeetCode 63 不同路径||
    程序员职业发展建议
    怎样才能使自己的内心平静
    mysql基础SQL ALTER TABLE
  • 原文地址:https://www.cnblogs.com/dfsac/p/7587900.html
Copyright © 2011-2022 走看看