2049--Maximum sum
来源:互联网 发布:python多进程共享变量 编辑:程序博客网 时间:2024/05/18 02:12
题目大意是:对于给定的整数序列A={a1, a2,..., an},我们如下定义函数 d(A):
我们的目标就是求出d(A)。
写完后搜了一下网上的结果,思路如下:先从左到右扫描一遍得到以ai为结尾的最大连续子段和,然后从右到左扫描一遍得到以ai为开头的最大连续子段和,最后整体扫描一遍就可以了。
另一种思路如下:记b[i]为a[n]中前i个数的最大连续子段和,c[i]为以a[i]结尾的两段最大连续子段和,则有递推公式:c[i]=max(c[i-1],b[i-1])+a[i].
#include <stdio.h>int T,n;int a[50010];long long b[50010],c[50010];long long MAX(long long x,long long y){return x>y?x:y;}int main(){scanf("%d\n",&T);while(T--){long long ans=-20002;scanf("\n%d\n",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);b[0]=a[0];b[1]=MAX(b[0],0)+a[1];c[0]=-20002;c[1]=a[0]+a[1];ans=MAX(c[1],ans);for(int i=1;i<n;i++){b[i]=MAX(b[i-1],0)+a[i];}b[1]=MAX(b[1],b[0]);for(int i=2;i<n;i++){b[i]=MAX(b[i],b[i-1]);c[i]=MAX(c[i-1],b[i-1])+a[i];ans=MAX(ans,c[i]);}printf("%ld\n",ans);}return 0;}
- 2049--Maximum sum
- Maximum Sum
- Maximum Sum
- Maximum sum
- Maximum sum
- Maximum Sum
- Maximum sum
- Maximum sum
- Maximum sum
- Maximum sum
- PKU 2479 Maximum sum
- POJ2479 Maximum sum
- 1091. Maximum Sum
- poj 2479 Maximum sum
- 【動態規劃】Maximum sum
- A Maximum sum&&北邮月赛题
- POJ2479 Maximum sum
- Maximum Subsequence Sum
- 告白七月的优雅伤感空间日志发布:2011,我们幸福了谁?
- MonkeyRunner_monkeyrunner 读写excel文件
- 小练笔:求最大公约数和最小公倍数
- 第十周上机任务项目6:打豆豆改写任务2
- CppCMS程序自动安装
- 2049--Maximum sum
- SWT、JFace、RCP笔记 设置控件透明度
- Mongodb源码分析--删除记录
- [開發紀錄]語音辨識注意事項
- 烟花烫的伤感凄美日志发布:我一直想对你说的八句话
- 各位给点建议
- 正确使用 hashCode 和 equals 方法
- GetLastError的返回值
- 求两个数的最大公约数及最小公倍数 。