zoukankan      html  css  js  c++  java
  • poj 2479 Maximum sum(DP)

    题意:求两段连续和使之最大

    思路:两个方向都处理。先正方向求出到每个index的连续最大和,然后从前往后把每个位置的最大和都更新一下(更新为前边所有和中最大的那个),反方向做同样的处理。

    然后i 1..n枚举

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<string>
     6 #include<queue>
     7 #include<algorithm>
     8 #include<map>
     9 #include<iomanip>
    10 #include<climits>
    11 #include<string.h>
    12 #include<numeric>
    13 #include<cmath>
    14 #include<stdlib.h>
    15 #include<vector>
    16 #include<stack>
    17 #include<set>
    18 #define INF 1e7
    19 #define MAXN 100010
    20 #define maxn 1000010
    21 #define Mod 1000007
    22 #define N 1299800
    23 using namespace std;
    24 typedef long long LL;
    25 
    26 int T;
    27 int n, num[50010];
    28 int sum1[50010],sum2[50010];
    29 
    30 void run()
    31 {
    32     scanf("%d", &n);
    33     memset(sum1, 0, sizeof(sum1));
    34     memset(sum2, 0, sizeof(sum2));
    35     memset(num, 0, sizeof(num));
    36     for (int i = 1; i <= n; ++i) 
    37         scanf("%d",&num[i]);
    38     if (n == 2) {
    39         printf("%d
    ",num[1] + num[2]);
    40         return;
    41     }
    42     for (int i = 1; i <= n; ++i) {
    43         if (sum1[i - 1] > 0)
    44             sum1[i] = sum1[i - 1] + num[i];
    45         else sum1[i] = num[i];
    46     }
    47     for (int i = 1; i <= n; ++i)
    48         sum1[i] = max(sum1[i - 1], sum1[i]);
    49     for (int i = n; i >= 1; --i) {
    50         if (sum2[i + 1] > 0)
    51             sum2[i] = sum2[i + 1] + num[i];
    52         else sum2[i] = num[i];
    53     }
    54     for (int i = n; i >= 1; --i)
    55         sum2[i] = max(sum2[i],sum2[i+1]);
    56     int ans = -INF;
    57     for (int i = 1; i <= n; ++i)
    58         ans = max(ans, sum1[i] + sum2[i + 1]);
    59     printf("%d
    ",ans);
    60 }
    61 
    62 int main()
    63 {
    64     scanf("%d", &T);
    65     while (T--)
    66         run();
    67     return 0;
    68 }
  • 相关阅读:
    vue 对css样式进行修改
    vue之绑定数据+data、methods、computed、watch的基础用法
    vue安装 devtools失败的临时解决办法
    解决VMware Workstation 与 Device/Credential Guard 不兼容
    后渗透之meterpreter常用命令
    2020-7- 27
    PIL模块调整图片大小
    maven(一) maven到底是个啥玩意~
    noi前第十二场 题解
    noi前第十一场 题解
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4370057.html
Copyright © 2011-2022 走看看