博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maximum sum(poj 2479)
阅读量:4641 次
发布时间:2019-06-09

本文共 872 字,大约阅读时间需要 2 分钟。

题意:给一段数列,将这个数列分成两部分,使两部分的最大子段和的和最大,输出和
/*  看数据没想到是(O)n的算法,求出从前向后的最大子段和和从后向前的最大子段和,  然后枚举断点。   第一次提交不小心折在数组最小值的赋值上…… */ #include
#include
#include
#define M 50010#define INF 1000000000using namespace std;int a[M],f1[M],f2[M],v1[M],v2[M],n;int main(){ int T;scanf("%d",&T); while(T--) { memset(f1,466,sizeof(f1)); memset(f2,466,sizeof(f2)); memset(v1,466,sizeof(v1)); memset(v2,466,sizeof(v2)); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) f1[i]=max(f1[i-1]+a[i],a[i]),v1[i]=max(f1[i],v1[i-1]); for(int i=n;i>=1;i--) f2[i]=max(f2[i+1]+a[i],a[i]),v2[i]=max(f2[i],v2[i+1]); int ans=-INF; for(int i=1;i
View Code

 

转载于:https://www.cnblogs.com/harden/p/5934678.html

你可能感兴趣的文章
Oozie的缺点
查看>>
HDU 1281 棋盘游戏
查看>>
tmp
查看>>
explain解析
查看>>
java获取多个汉字的拼音首字母
查看>>
React组件开发(一)初识React
查看>>
javascript
查看>>
js排序方法
查看>>
ssl
查看>>
数据库
查看>>
css样式兼容不同浏览器问题解决办法
查看>>
【R笔记】apply函数族
查看>>
ThinkPHP 设置传送门
查看>>
NSBundle详解
查看>>
Python基础笔记(三)
查看>>
0型文法、1型文法、2型文法、3型文法 的判定
查看>>
libgif.so
查看>>
maven apklib
查看>>
一个关于boxing和unboxing的demo
查看>>
随机洗牌算法
查看>>