/*
 题意:选出3个连续的 数的个数  为K的区间,使他们的和最大
分析: dp[j][i]=max(dp[j-k][i-1]+value[j],dp[j-1][i]);
 
dp[j][i]:从j个数种选出i个连续区间  数值的最大和
value[j]:第j个区间内的数的和
和背包有点像,但要活用
 
*/
 
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int dp[50005][4];
 
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
 
 
 
        int n;
        scanf("%d",&n);
        int a[n+1],sum[n+1];
        memset(dp,0,sizeof(dp));
        memset(a,0,sizeof(a));
        memset(sum,0,sizeof(sum));
 
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            sum[i]=sum[i-1]+a[i];//前缀和,用于求连续k个数的和
        }
 
 
 
        int k=0;
        scanf("%d",&k);
        int value[n+1];
        memset(value,0,sizeof(value));
        for(int i=1; i<=k; i++)
            value[i]=value[i-1]+a[i];
        for(int i=k+1; i<=n; i++)
            value[i]=sum[i]-sum[i-k];//连续k个数的和,value[i]代表区间长度为k的第i个区间
 
 
 
        for(int j=k; j<=n; j++)
            for(int i=1; i<=3; i++)
                dp[j][i]=max(dp[j-k][i-1]+value[j],dp[j-1][i]);//从j个数中选出i个区间,若选第i个区间,就相当于从前(j-k)个数中选出(i-1)个区间的基础上再加此区间(value[j]),若不选就是相当于在(j-1)个数中选i个区间
 
 
 
            printf("%d\n",dp[n][3]);
 
 
 
    }
 
    return 0;
}

最新文章

  1. java时间类型操作
  2. 计算机开放电子书汇总(包括二十多本python相关的图书教程)
  3. 基于DDD的.NET开发框架 - ABP领域服务
  4. 常用SQL语句优化技巧
  5. redhat enterprixe 5.0 下DHCP服务器rpm安装配置及其测试
  6. java中静态代理跟动态代理之间的区别
  7. &lt;转&gt;selenium+python+API分类总结
  8. Drupal 7.31 SQL注入漏洞利用具体解释及EXP
  9. hdu 5427 A problem of sorting 水题
  10. linux cache swap 以及 虚拟内存等
  11. 在Swift中使用遗留的C API
  12. android 计时器,倒计时
  13. strip 命令的使用方法
  14. vim文本基础
  15. http协议与https协议的前世今生
  16. JMeter中的正则表达式的匹配
  17. linq——group by
  18. json 与字符串相互转换,
  19. Debian 利用 iso 镜像完全离线更新 apt-cdrom
  20. linux-VM无法连接mks套接字连接尝试次数太多

热门文章

  1. SDWebImage 在多线程下载图片时防止错乱的策略
  2. Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)
  3. 16_用LVM扩展xfs文件系统(当分区空间不够时)
  4. 数组Api .map()的使用
  5. Grnymotion模拟器和Android真机访问PC端Tomcat下的应用
  6. php数组基础
  7. 基于 libmemcahce 的memcache 操作
  8. 安卓SDK Manager自动管理各种包
  9. java导入导出excel常用操作小结及简单示例
  10. instancetype 与 id for Objective-C