HDU 1024 Max Sum Plus Plus
来源:互联网 发布:淘宝指数 编辑:程序博客网 时间:2024/06/05 02:21
这个题就是求最大的字段和, 输入 m, 求一个序列 不相交的m段的最大和。
和 最大连续和有点像。 但是明显难了一些。
自己尝试写了一个 d【i】【j】 到 第 i 项 j段的 最大和。但是写也写错了。
看了别人写的题解。 要注意一点。 一定是 最后一个元素 d【i】【j】 一定包含 a【i】 我也是没有意识到这一点就没写出来。
但是这个题卡内存啊。 元素个数这么多。。
然后需要滚动数组。 每次都保存上一次的 前 j 个数的最大和。
#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <cmath>#include <cstdlib>#include <string>#include <map>#include <vector>#include <set>#include <queue>#include <stack>#include <cctype>using namespace std;typedef long long LL;typedef unsigned long long ULL;#define MAXN 1000000+10#define INF (1<<30)#define mod 123456789double eps = 1e-10;int a[MAXN] = {0};int d[MAXN] = {0};int pre[MAXN] = {0};int main (){ int len,n; while(scanf("%d",&len) != EOF){ int n; scanf("%d",&n); for(int i = 1; i <= n; i++){ scanf("%d",&a[i]); d[i] = pre[i] = 0; } int MA = -INF; for(int i = 1; i <= len; i++){ MA = -INF; for(int j = i; j <= n; j++){ d[j] = max(d[j-1]+a[j], pre[j-1]+a[j]); pre[j-1] = MA; MA = max(MA, d[j]); } } printf("%d\n",MA); } return 0;}
0 0
- hdu 1024Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus--DP
- hdu 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus(dp)
- hdu 1024 max sum plus plus
- HDU 1024 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- HDU 1024 Max Sum Plus Plus
- 【HDU 1024】 Max Sum Plus Plus
- hdu 1024 Max Sum Plus Plus
- HDU 1024 Max Sum Plus Plus
- hdu-1024-Max Sum Plus Plus-DP
- hdu 1024 Max Sum Plus Plus
- HDU 1024Max Sum Plus Plus
- linux sort,uniq,cut,wc命令详解
- 费马小定理
- 【web++_第三阶段_前端框架选择】
- linux sed命令详解
- heap&stack 区别
- HDU 1024 Max Sum Plus Plus
- linux awk命令详解
- struts2配置
- 谈VC++对象模型(类内存占用)
- 单链表的19个功能编写(求指导)
- Java编写线程死锁
- linux统计出现次数top3的url
- hdu1789Doing Homework again(贪心)
- 单例模式