NCSTOJ:V : 蛋糕的最大幸运值
时间:2019-04-19
本文章向大家介绍NCSTOJ:V : 蛋糕的最大幸运值,主要包括NCSTOJ:V : 蛋糕的最大幸运值使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
V : 蛋糕的最大幸运值
Time Limit:1 Sec Memory Limit:128 MiB
Back Submit Edit
Description
[洛谷 P1714]
今天是小Z的生日,同学们为他带来了一块蛋糕。
这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值。
小Z希望吃到的蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕。
请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大。
Input
第一行包含两个整数N和M,表示共有N小块蛋糕,小Z最多只能吃M小块。
第二行包含空格隔开的N个整数,第i个整数Pi代表第 i 小块蛋糕的幸运值。
数据范围:
1 ≤ N ≤ 500000
−500 ≤ Pi ≤ 500
Output
输出包含一个整数,为小Z能够得到的最大幸运值。
Sample Input
5 2
1 2 3 4 5
Sample Output
9
More Info
题意分析:
在长度为N的区间里找一个长度不超过M的区间,要求区间和最大。
输入样例2:
6 3
1 -2 3 -4 5 -6
输出样例2:
5
#include<iostream>
#include<deque>
using namespace std;
const int maxn=500010;
int f[maxn],sum[maxn];
int n,m,ms=-0x3f3f3f3f;
int maxnn=-0x3f3f3f3f;
int main(){
// freopen("qwe.txt","r",stdin);
cin>>n>>m;
deque<int >deq;
for(int i=1;i<=n;i++)
{
scanf("%d",&f[i]);
sum[i]=sum[i-1]+f[i];
maxnn=max(maxnn,f[i]);
}
for(int i=1;i<=n;i++)
{
while(!deq.empty()&&sum[i]<sum[deq.back()]) deq.pop_back();
//入队前维护单调性
deq.push_back(i);
while(!deq.empty()&&deq.back()-deq.front()>m) deq.pop_front();
//入队后维护长度
if(deq.size()>=2&&deq.size()<=m+1)ms=max(ms,sum[deq.back()]-sum[deq.front()]);
//因为是根据前自序和计算的所以双端队列的长度最多可以比要求的最大长度还要多1(根据前自序和的性质)
}
if(ms==-0x3f3f3f3f)cout<<0<<endl;//注意特殊值判断
else cout<<ms<<endl;
return 0;
}
- linux下 Error running javac compiler
- 讨厌算法的程序员 1 - 插入排序
- Linux下使用ssh密钥实现无交互备份
- [编程经验] Python中的continue和break语句
- 洛谷 P3386 【模板】二分图匹配 Dinic版
- [编程经验] 拉勾网爬虫数据的后续处理
- Linux下使用rsync实现文件备份
- 【干货】基于TensorFlow卷积神经网络的短期股票预测
- [编程经验] 基于bs4的拉勾网AI相关工作爬虫实现
- [编程经验] 链家23个全国主要城市的现房数据分析
- [编程经验] Python中的modlue和packages的区别
- Day5上午解题报告
- [编程经验] Pandas中比较好用的几个方法
- [编程经验] Elasticsearch 初识
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php session_decode函数用法讲解
- 解决python对齐错误的方法
- 详解pyinstaller生成exe的闪退问题解决方案
- PHP递归算法的简单实例
- Yii2框架操作数据库的方法分析【以mysql为例】
- 使用OpenCV实现道路车辆计数的使用方法
- python中tab键是什么意思
- PHP实时统计中文字数和区别
- PHP单例模式实例分析【防继承,防克隆操作】
- Python基于network模块制作电影人物关系图
- tp5(thinkPHP5框架)使用DB实现批量删除功能示例
- 统计PHP目录中的文件数方法
- python json.dumps() json.dump()的区别详解
- Win10下用Anaconda安装TensorFlow(图文教程)
- TP5(thinkPHP框架)实现后台清除缓存功能示例