• 贪心 FZU 2013 A short problem


    题目传送门

     1 /*
     2     题意:取长度不小于m的序列使得和最大
     3     贪心:先来一个前缀和,只要长度不小于m,从m开始,更新起点k最小值和ans最大值
     4 */
     5 #include <cstdio>
     6 #include <algorithm>
     7 using namespace std;
     8 
     9 const int MAXN = 1e6 + 10;
    10 const int INF = 0x3f3f3f3f;
    11 int a[MAXN], sum[MAXN];
    12 
    13 int main(void)        //FZU 2013 A short problem
    14 {
    15 //    freopen ("C.in", "r", stdin);
    16 
    17     int t;    scanf ("%d", &t);
    18     while (t--)
    19     {
    20         int n, m;    scanf ("%d%d", &n, &m);
    21         for (int i=1; i<=n; ++i)
    22         {
    23             scanf ("%d", &a[i]);    sum[i] = sum[i-1] + a[i];
    24         }
    25 
    26         int k = 0;    int ans = -INF;
    27         for (int i=m; i<=n; ++i)
    28         {
    29             ans = max (ans, sum[i] - k);
    30             k = min (k, sum[i-m]);
    31         }
    32 
    33         printf ("%d
    ", ans);
    34     }
    35 
    36     return 0;
    37 }
    编译人生,运行世界!
  • 相关阅读:
    第一次作业
    1-10的四则运算
    实验九
    实验五
    实验四
    实验三
    实验二
    实验一
    汇编第一章总结
    实验九
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4650203.html
Copyright © 2020-2023  润新知