题目链接:点击查看

题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值

题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一个位置当做子段和截止的位置,用单调队列维护区间[i-m,i]中的最小值,最小值的下标记为j,这样就能让a[i]-a[j]最大了

很巧妙的思路。。真的想不到,可能思维太菜了吧

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<deque>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=5e5+100;int a[N];int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",a+i);a[i]+=a[i-1];//前缀和}deque<int>q;//维护最小值的下标int ans=-inf;for(int i=1;i<=n;i++){while(q.size()&&a[q.back()]>=a[i])q.pop_back();q.push_back(i);while(q.size()&&q.front()<i-m)q.pop_front();ans=max(ans,a[i]-a[q.front()]);}printf("%d\n",ans);return 0;
}

洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)相关推荐

  1. 【Leetcode单调队列】- 洛谷P1714切蛋糕

    单调队列 解决该类问题的重点维护一个队列,从队首到队尾是递减的,队首是最大的.队尾是最小的. 队尾接受值,队首排出值. Java实现用双端队列,前面接收值,后面排出来值. 这类题目往往是跟滑动窗口一起 ...

  2. 洛谷 P1714 切蛋糕

    题目链接 题目描述 今天是 Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大 ...

  3. 洛谷—— P1714 切蛋糕

    https://www.luogu.org/problem/show?pid=1714 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每 ...

  4. 【洛谷 P1638】 【单调队列】 逛画展

    [洛谷 P1638] [单调队列] 逛画展 题目 解题思路 先求出最前面囊括所有画的位置 然后如果左边界的画不止存在一次,左边界右移 不断扩展右边界,求取答案 代码 #include<iostr ...

  5. P1714 切蛋糕(线段树+前缀和)

    P1714 切蛋糕 解题思路:求连续区间不超过k的最大值.先求出前缀和,线段树维护前缀和,在一个长度为k的区间,找到前缀和最小的,用最后的值减去这个值,得到的就是在这个区间里的最大值.如果长度不能到达 ...

  6. 洛谷 - P1886 滑动窗口(单调队列/线段树)

    题目链接:点击查看 题目大意:给出一个由n个数构成的序列,再给出一个长度为k的窗口,这个窗口从第一个下标开始一直向后移动,每次移动一个单位,每次移动询问一次该窗口中的最大值和最小值,最后输出答案 题目 ...

  7. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP

    传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...

  8. 【洛谷】【动态规划+单调队列】P1725 琪露诺

    [题目描述:] 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精. 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪露诺决定到河 ...

  9. 切蛋糕(洛谷P1714)

    切蛋糕 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大, ...

最新文章

  1. C#/.Net判断是否为周末/节假日
  2. window.open
  3. python pdf库_3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!
  4. RabbitMQ+PHP 教程六(RPC)
  5. 【Java】GUI桌面弹球游戏
  6. mysql 根据总分排名
  7. 【DFS】LeetCode 40. Combination Sum II
  8. vue 登录页qq快速登录功能
  9. 复旦大学邢晓渝:无监督句法分析模型里面的监督信号
  10. 仿微信视频下载进度自定义View
  11. linux bmp图片怎么转换成ppm,ppm图像格式与bmp之间的相互转换
  12. 【打表枚举+二分】喜爱
  13. 机器学习 EM算法理解
  14. Linux主分区文件系统,Linux_Linux磁盘和文件系统管理,1、 分区MBR(Master Boot Recor - phpStudy...
  15. Testin云测荣获5G应用企业服务优秀平台奖
  16. Redis Zadd 命令
  17. 转:以logistic Regression为例实现多类别分类及Python实现
  18. 【微淘百课】多群直播-微信群直播
  19. github 上的Qt 高分源码列举与总结
  20. 重构是什么,为什么要重构,怎么重构

热门文章

  1. Nginx server_name精确匹配配置
  2. Nginx基础配置实例配置实现
  3. spring boot整合redis实现统计访问量
  4. java实现的代理的两种办法
  5. leader选举的源码分析-FastLeaderElection
  6. Bean标签基本配置
  7. SpringCloud与子项目版本兼容说明
  8. JVM-Java内存区域
  9. html时钟翻牌效果,干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)
  10. 笔记本电脑建wifi