首页 > 其他 > 详细

HDU1081 To The Max

时间:2018-12-14 11:43:32      阅读:128      评论:0      收藏:0      [点我收藏+]

二维前缀和 || 类子序列和的DP

后者快,压二维为一维的方法

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdio>
 5 
 6 using namespace std;
 7 
 8 const int N = 108;
 9 int n, ans = -2147483633, up[N][N], dp[N], a, b[N];
10 
11 int main()
12 {
13     while (~scanf("%d", &n))
14     {
15         ans = -2147483633;
16         for (int i = 1; i <= n; ++i)
17             for (int j = 1; j <= n; ++j)
18                 scanf("%d", &a), up[i][j] = a + up[i - 1][j];
19         for (int line = 1; line <= n; ++line)
20             for (int high = 1; high <= line; ++high)
21             {
22                 for (int i = 1; i <= n; ++i)
23                     dp[i] = 0, b[i] = up[line][i] - up[high - 1][i];
24                 for (int i = 1; i <= n; ++i)
25                     dp[i] = max(dp[i - 1], 0) + b[i], ans = max(dp[i], ans);
26             }
27         printf("%d\n", ans);
28     }
29     return 0;
30 }

 

HDU1081 To The Max

原文:https://www.cnblogs.com/yanyiming10243247/p/10118115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!