51 nod 循环最大字段和 DP
来源:互联网 发布:淘宝卖死人衣服视频 编辑:程序博客网 时间:2024/06/05 00:15
题目:https://cn.vjudge.net/contest/178832#problem/E
和最小子段和不一样,这道题可以尾首相连,就是在一个圈里找到最大子段和。
思路:可以找到最小子段和,用all-最小子段和,就是有首尾相连的最大字段,然后再和没有首尾相连的最大字段比较,最大者就是答案。
#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;#define maxn 50000+5int a[maxn];long long dp[maxn],fdp[maxn];int main(){int n,i,j;while (~scanf("%d", &n)){fdp[0]=dp[0] = 0;long long ans = 0,all=0;for (i = 1; i <= n; i++){scanf("%d", &a[i]);all += a[i];fdp[i]=dp[i] = a[i];//存储最小子段和dp[i] = max(dp[i], dp[i - 1] + a[i]);fdp[i] = min(fdp[i], fdp[i - 1] + a[i]);}long long maxsum = 0, minsum = 0;for (i = 1; i <= n; i++)maxsum = max(dp[i], maxsum);for (i = 1; i <= n; i++)minsum = min(fdp[i], minsum);ans = max(maxsum, all - minsum);printf("%lld\n", ans);}return 0;}
阅读全文
0 0
- 51 nod 循环最大字段和 DP
- 51Nod 1050 循环数组最大字段和 ( DP
- 51nod--1050 循环数组最大字段和
- 51NOD 最大子字段和问题(DP入门)
- 51nod 循环数组最大子段和 (dp)
- 51nod 1050 循环数组最大子段和 dp
- 51Nod 1050 循环数组最大子段和 (最大字段和)
- 51Nod 1051 最大子矩阵和(二维最大字段和dp)
- 51Nod 1050 循环数组最大子段和(DP—最大子段和变形)
- 51nod--1049 最大字段和
- 51Nod 1050 循环数组最大子段和(dp)
- 【51Nod】1050 - 循环数组最大子段和(dp)
- 51nod oj 1050 循环数组最大子段和 【DP】
- 51nod 1050 循环数组最大子段和(基础dp)
- 51Nod-1050 循环数组最大段和【最大子段和+最小子段和+DP】
- 最大字段和DP
- 51Nod-最大字段和(动态规划)
- [51nod 1051 最大子矩阵和]前缀和+dp
- 超级详细的MyEclipse安装教程!
- hdu 3853 概率dp
- mapreduce
- Java并发包-浅析LongAdder
- App跨平台开发框架分析
- 51 nod 循环最大字段和 DP
- java1.8版本hashTable源码阅读
- 动作、按键
- 【WEB】百度糯米学院学习笔记
- HTML5 Web 存储
- Servlet文件上传
- jQuery实现用户信息表格的添加、删除操作
- 51Nod 1241 特殊的排序
- 设计模式之禅—23种设计模式详解_1 单例模式