题目:XJOI335

传送门 [ >XJOI< ]

重要提示:您的膜法等级必须达到3级6段才可使用本传送门,否则您会被小猫痛扁

因为博主太懒,不提供题面(QAQ)...

很容易想到使用DP,设f[i][j]为第i个段,第i-1段以j-1为终点的最大可能和。

于是引出递推式:f[i][j] = max(f[i-1][k]) 其中k枚举且k<j。

然后优化DP,使用一个数组来保存max(f[i-1][k])的值省去枚举。

发现该数组必须使用交替的方式来保证需要的值不被覆盖。

最后一步发现f数组的第一维可以省去,空间不会溢出,得解!

附上一段垃圾代码:

#include <cstdio>
#include <queue>
#include <cstring>
#define ll long long
using namespace std;
ll p[5005],f[5005],Max[2][5005];
int main()
{int n, m, k, i;scanf("%d %d %d",&n,&m,&k);for (i=1;i<=n;i++)scanf("%lld",&p[i]);ll max_ans=0;for (i=1;i<=k;i++){int j;Max[0][0] = 0;for (j=(i-1)*m+1;j<=(n-m+1);j++){ll tmp = 0;for (int K=0;K<m;K++)tmp+=p[j+K];if (j - m > 0)f[j]=Max[0][j - m]+tmp;else f[j]=tmp;if (f[j]>Max[1][j-1]||j==((i-1)*m+1))Max[1][j]=f[j]; else Max[1][j]=Max[1][j-1];if (i==k&&f[j]>max_ans)max_ans=f[j];}memset(Max[0],0,sizeof(Max[0]));for (j=(i-1)*m+1;j<=(n-m+1);j++)Max[0][j]=Max[1][j];}printf("%lld",max_ans);return 0;
}

别问我为什么要压行,XJ老是拦截(QWQ),我也没办法啊。

转载于:https://www.cnblogs.com/linzhengmin/p/9446194.html

[XJOI]最大K段和 题解相关推荐

  1. 如何计算k段流水线执行n条指令的执行时间

    来源:http://blog.sina.com.cn/s/blog_4ec38d4f01007uw2.html 计算k段流水线执行n条指令的执行时间,有必要区分两种情况: 如果流水线中的各段执行时间均 ...

  2. [2020多校A层11.25]最大K段和(反悔贪心)

    [2020多校A层11.25]最大K段和 对于一个长度为n的序列,求解不相交的k段使得他们的总和最大,输出最大值. n<=1e5 对于这种问题,我们没有思路求解,可以考虑枚举,发现无法枚举,然后 ...

  3. 牛客题霸 [ 最小的K个数] C++题解/答案

    牛客题霸 [ 最小的K个数] C++题解/答案 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题解: 如果有n&l ...

  4. 牛客题霸 [寻找第K大] C++题解/答案

    牛客题霸 [寻找第K大] C++题解/答案 题目描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的 ...

  5. 计算k段流水线执行n条指令的执行时间

    计算k段流水线执行n条指令的执行时间,有必要区分两种情况: 如果流水线中的各段执行时间均为t,那么执行n条指令的时间就是执行第一条指令的时间kt,加上其余n-1条指令各执行一段的时间(n-1)t. 如 ...

  6. 要传送的报文共 x ( bit )。从源点到终 点共经过 k 段链路,每段链路的传播时延为 d ( s ),数据率为 b ( bit / s )。在电路交换时电路的建立时间为 s ( s )。在分组交

    1.题目 要传送的报文共 x ( bit ).从源点到终点共经过 k 段链路,每段链路的传播时延为 d ( s ),数据率为 b ( bit / s ).在电路交换时电路的建立时间为 s ( s ). ...

  7. newcoder Tachibana Kanade Loves Probability(小数点后第k位)题解

    题意: 题目链接 立华奏在学习初中数学的时候遇到了这样一道大水题: "设箱子内有 n 个球,其中给 m 个球打上标记,设一次摸球摸到每一个球的概率均等,求一次摸球摸到打标记的球的概率&quo ...

  8. 2020牛客暑期多校训练营(第八场)K - Kabaleo Lite 题解

    [原题传送门] Tired of boring WFH (work from home), Apollo decided to open a fast food restaurant, called ...

  9. 牛客题霸 [链表中倒数第k个结点] C++题解/答案

    链表中倒数第k个结点 题解: 我们把链表存两份,让其中一个先走k个节点,然后两个链表一起走,直到第一个链表到头,因为两个相差k个节点,所以第二个链表停的位置就是倒数第k个 代码: /* struct ...

最新文章

  1. 【Spark篇】---SparkStream初始与应用
  2. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
  3. 异地多活场景下的数据同步之道 | 珍藏版
  4. [网络安全自学篇] 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
  5. PHP+Ajax手机移动端发红包实例
  6. @Python 程序员,如何实现狂拽酷炫的 3D 编程技术?
  7. candence pcb走线等长_Allegro的通用等长规则设置方法
  8. javascript获取元素样式值
  9. 在微信中实现一键调用扫一扫
  10. 360浏览器html文件无图标,360浏览器在网页的右键里不显示审查元素怎么了
  11. 研修国学请注意选好教材
  12. 分别计算二维数组主对角线元素与辅对角线元素的和。
  13. 院士大牛们一年N篇7点以上SCI的诀窍
  14. 信息增益与信息增益率详解
  15. css firefox hack,firefox 专属css hack
  16. 【Python】根据多个列同时进行多条件筛选数据
  17. 微信小程序支付功能用服务器吗,微信小程序 支付功能 服务器端(TP5.1)实现...
  18. 【50关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法】
  19. 《Deep Learning with Python》(中文版)—读书笔记
  20. Node.js:Buffer基础

热门文章

  1. 菜鸟学Linux 第007篇笔记 简单命令的使用讲解(文本、时间、目录)
  2. lucene创建索引
  3. 【分布式】Zookeeper请求处理
  4. C++语言基础 例程 设计模式简介
  5. 编程之美 set 17 拈游戏分析 (2)
  6. Python连接MySQL数据库执行sql语句时的参数问题
  7. SSIS中的容器和数据流—举例说明数据转换任务
  8. c# nullable类型有什么用
  9. python基础:并行遍历ZIP()函数介绍
  10. 你真的会使用Glide吗?——Glide的高级用法