最大子段和
来源:互联网 发布:软件alias怎么读 编辑:程序博客网 时间:2024/05/22 04:51
送分题(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;}
阅读全文
0 0
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- “最大子段和”
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- Python使用MySQL
- python enumerate用法总结
- Spring注解方式装配Bean
- 数据结构导论
- laravel 环境配置 Win
- 最大子段和
- 学生信息管理系统总结之二 :继安装sql之后的配置ODBC
- HDU 1008电梯问题
- 用户管理【Ubuntu-shell】
- LA 2678 Meteor (区间覆盖)
- Jquery选择器--过滤选择器
- altiumdesigner 14画PCB时白圈(out of silkscreen region)
- C#中 virtual 和 abstract 区别
- Oracle12154解决办法