洛谷 P1714 切蛋糕
题目链接
题目描述
今天是 Z的生日,同学们为他带来了一块蛋糕。这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值。
小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕。
吃东西自然就不想思考了,于是小Z把这个任务扔给了学OI的你,请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大。
输入格式
输入文件cake.in的第一行是两个整数N,M。分别代表共有N小块蛋糕,小Z最多只能吃M小块。
第二行用空格隔开的N个整数,第i个整数Pi代表第i小块蛋糕的幸运值。
输出格式
输出文件cake.out只有一行,一个整数,为小Z能够得到的最大幸运值。
输入 #1
5 2
1 2 3 4 5
输出 #1
9
输入 #2
6 3
1 -2 3 -4 5 -6
输出 #2
5
单调队列~
我们考虑怎么用单调队列实现:
首先队列内要递增,因为要求和,所以用递增便于实现前缀和相减求和,我们还是在队内存入下标,考虑出队情况:
1.队内元素大于 m+1m+1m+1,为什么不是大于 mmm?因为求一段区间的和是 sum[r]−sum[l−1]sum[r]-sum[l-1]sum[r]−sum[l−1],所以要在优先队列内多存一个下标,此时弹出队头
2.队内元素不满足递增序,此时弹出队尾即可
每次遍历更新一下答案即可,AC代码如下:
#include<bits/stdc++.h>using namespace std;
typedef long long ll;
const int N = 5e5 + 5;
int a[N], sum[N] = {0};
deque<int> q;int main() {int n, m, ans = 0;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);sum[i] = a[i] + sum[i - 1];while (q.size() && q.front() < i - m) q.pop_front();while (q.size() && sum[i - 1] < sum[q.back()]) q.pop_back();q.push_back(i - 1);if (q.size()) {ans = max(ans, sum[i] - sum[q.front()]);}}printf("%d", ans);return 0;
}
洛谷 P1714 切蛋糕相关推荐
- 【Leetcode单调队列】- 洛谷P1714切蛋糕
单调队列 解决该类问题的重点维护一个队列,从队首到队尾是递减的,队首是最大的.队尾是最小的. 队尾接受值,队首排出值. Java实现用双端队列,前面接收值,后面排出来值. 这类题目往往是跟滑动窗口一起 ...
- 洛谷—— P1714 切蛋糕
https://www.luogu.org/problem/show?pid=1714 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每 ...
- 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)
题目链接:点击查看 题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值 题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一 ...
- P1714 切蛋糕(线段树+前缀和)
P1714 切蛋糕 解题思路:求连续区间不超过k的最大值.先求出前缀和,线段树维护前缀和,在一个长度为k的区间,找到前缀和最小的,用最后的值减去这个值,得到的就是在这个区间里的最大值.如果长度不能到达 ...
- 切蛋糕(洛谷P1714)
切蛋糕 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大, ...
- 洛谷 P1490 买蛋糕
P1490 买蛋糕 题目描述 野猫过生日,大家当然会送礼物了(咳咳,没送礼物的同志注意了哈!!),由于不知道送什么好,又考虑到实用性等其他问题,大家决定合伙给野猫买一个生日蛋糕.大家不知道最后要买的蛋 ...
- 【寒假每日一题】洛谷 P7471 [NOI Online 2021 入门组] 切蛋糕
题目链接:P7471 [NOI Online 2021 入门组] 切蛋糕 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 Alice.Bob 和 Cindy 三个好朋友得到 ...
- 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO
记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...
- 切绳子【洛谷P1577】【二分】
切绳子[洛谷P1577][二分] 文章目录 切绳子[洛谷`P1577`][二分] 题目描述 输入格式 输出格式 输入 输出 代码 题目描述 有 N 条绳子,它们的长度分别为 Li.如果从它们中切割出 ...
最新文章
- 什么是用户画像?如何构建用户画像?
- 解决ntp的错误 no server suitable for synchronization found
- Vue.js之组件及其易错点
- 常用的JPA标记 (转)
- requireJS多页面应用实例
- 5. Mac phpstorm 快捷键
- spring5.0学习笔记2
- SpringBoot 的错误处理机制
- (新手版)GitHub 使用思想,上传,首次上传及日常使用教程(肯定看得懂)
- 微信小程序获取当前时间及获取当前日期
- 支付宝沙箱测试手机网站支付,提示商户合作协议已到期,无法继续使用
- bootstrap3 表单构建器_Knex - 灵活轻便的 Node.js SQL 查询构建器
- [植树造林小游戏1.1]
- TensorFlow 使用 slim 模块搭建复杂网络
- VC++的窗口句柄和窗口ID
- 网神通留言本群发 v3.0 免费
- Java程序员的人生目标和学习方向真的很重要!!!
- CAS ABA问题及解决方案示例
- 人工神经网络与神经网络,人工神经网络基本概念
- 阅读_分享成为高效程序员的7个重要习惯