首页 > 代码库 > HDU 1858 Max Partial Value I
HDU 1858 Max Partial Value I
求连续子序列的最大和
为毛简单的入门DP没有思路啊。。
学习下别人的解法,理解起来倒还是很容易的。
1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 8 const int maxn = 1000000 + 10; 9 const int INF = -10000000;10 11 struct Node12 {13 long long w;14 int l, r;15 }node[maxn];16 17 long long a[maxn];18 19 int main(void)20 {21 #ifdef LOCAL22 freopen("1858in.txt", "r", stdin);23 #endif24 25 int N;26 scanf("%d", &N);27 while(N--)28 {29 int n;30 scanf("%d", &n);31 int i;32 for(i = 1; i <= n; ++i)33 {34 scanf("%I64d", &a[i]);35 node[i].w = a[i];36 node[i].l = node[i].r = i;37 }38 39 int ans = 1;40 for(i = 2; i <= n; ++i)41 {42 if(node[i-1].w+a[i] >= node[i].w)43 {44 node[i].w = node[i-1].w + a[i];45 node[i].l = node[i-1].l;46 }47 if(node[i].w > node[ans].w)48 ans = i;49 }50 51 printf("%I64d %d %d\n", node[ans].w, node[ans].l, node[ans].r);52 }53 return 0;54 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。