最大子段和(前缀和 杭电排位赛-2)
来源:互联网 发布:京东搜索优化 编辑:程序博客网 时间:2024/06/05 18:39
最大子段和
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 334 Accepted Submission(s): 130
Problem Description
一个大小为n的数组a1 到an (-10^4≤ai ≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。
Input
第一行为T(1≤T≤5),代表数据组数。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表a1到an 。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表
Output
每组数据输出一行,表示满足要求的子段和最大值。
Sample Input
141 2 3 4
Sample Output
9
每两个两个的计算,从奇数和偶数项分别开始计算。
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int ax[100005]; int main() { int t; scanf("%d",&t); while (t--) { int n; scanf("%d",&n); for (int i=0; i<n; ++i) { scanf("%d",&ax[i]); } int ans,sum; ans=ax[0]; sum=ax[0]; //只要其前缀子段的和为正 那么前缀子段就需要加进去使得和继续变大 for (int i=1; i<n-1; i+=2) { sum=sum+ax[i]+ax[i+1]; if (sum<ax[i+1]) { sum=ax[i+1]; } if (ans<sum)ans=sum; } // printf("ans=%d\n",ans); sum=ax[1]; ans=max(ans,sum); //扫一遍偶数 for (int i=2; i<n-1; i+=2) { sum=sum+ax[i]+ax[i+1]; if (sum<ax[i+1]) { sum=ax[i+1]; } if (ans<sum) ans=sum; } printf("%d\n",ans); } return 0; }
阅读全文
0 0
- 最大子段和(前缀和 杭电排位赛-2)
- 【前缀和】洛谷 P1115 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- “最大子段和”
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 导入库(源)文件方法 py3
- mysql常用工具介绍(1/2)
- 什么是虚拟机管理器VMM,虚拟机管理器(VMM)有哪些,区别是什么?
- 中缀转后缀
- 清理:终结处理和垃圾回收
- 最大子段和(前缀和 杭电排位赛-2)
- linux下查看内存使用情况的命令
- 打怪升级 CSU
- 裴蜀定理与乘法逆元
- 多线程的join阻塞的是哪个线程
- php的laravel框架快速集成微信登录
- Maven搭建SSH的pom的代码详解(转载)
- phpStudy启动失败时的解决方法 提示缺vc9运行库
- NYOJ 49-开心的小明(经典01背包)--内附背包九讲2.0PDF