1598:【 例 2】最大连续和

时间限制: 1000 ms         内存限制: 524288 KB

【题目描述】

给你一个长度为 n 的整数序列 {A1,A2,⋯,An},要求从中找出一段连续的长度不超过 m 的子序列,使得这个序列的和最大。

【输入】

第一行为两个整数 n,m;

第二行为 n 个用空格分开的整数序列,每个数的绝对值都小于 1000。

【输出】

仅一个整数,表示连续长度不超过 m 的最大子序列和。

【输入样例】

6 4
1 -3 5 1 -2 3

【输出样例】

7

【提示】

数据范围与提示:

对于 50% 的数据,1≤N,M≤104

对于 100% 的数据,1≤N,M≤2×105

sol:就像模板一样,维护前缀和,对于每一个前缀和S[i],寻找S[i-m]~S[i-1]中最小的那个,用单调队列维护即可

#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{ll s=0;bool f=0;char ch=' ';while(!isdigit(ch)){f|=(ch=='-');ch=getchar();}while(isdigit(ch)){s=(s<<3)+(s<<1)+(ch^48);ch=getchar();}return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{if(x<0){putchar('-');x=-x;}if(x<10){putchar(x+'0');return;}write(x/10);putchar((x%10)+'0');return;
}
inline void writeln(ll x)
{write(x);putchar('\n');return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) writeln(x)
const int N=200005,inf=0x3f3f3f3f;
int n,m,Qzh[N];
struct Record
{int Shuz,Weiz;
}Ddq[N];
int main()
{
//    freopen("sum12.in","r",stdin);int i,Head=0,Tail=0,ans=-inf;R(n); R(m);for(i=1;i<=n;i++){int x=read(); Qzh[i]=Qzh[i-1]+x;while(Head<Tail&&Ddq[Head].Weiz<i-m) Head++;ans=max(ans,Qzh[i]-Ddq[Head].Shuz);while(Head<=Tail&&Qzh[i]<=Ddq[Tail].Shuz) Tail--;Ddq[++Tail]=(Record){Qzh[i],i};}Wl(ans);return 0;
}
/*
input
5 2
-21 -2 -1 -11 -3
output
-1
*/

View Code

转载于:https://www.cnblogs.com/gaojunonly1/p/10371866.html

一本通1598【 例 2】最大连续和相关推荐

  1. 一本通【例4-10】最优布线问题

    题目链接 http://ybt.ssoier.cn:8088/problem_show.php?pid=1349 问题描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被 ...

  2. 信奥一本通-动态规划-例9.2-数字金字塔-方法四-逆推法代码实现

    #include<bits/stdc++.h> using namespace std;int main(){//x y分别为行列int x, y;//金字塔的高度int n;cin &g ...

  3. java hashcode返回1_java – 为什么hashCode()在所有连续执行中为对象返回相同的值?...

    我在 java中尝试一些关于对象相等性的代码.正如我在某处读过的 hashCode() is a number which is generated by applying the hash func ...

  4. Flink:动态表上的连续查询

    用SQL分析数据流 越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案.其中许多应用程序专注于分析流数据.分析的数据流来源广泛,如数据库交易,点击,传感器 ...

  5. 为什么可积不一定可导_极限存在、连续、有界、可积、可导/可微之间的关系...

    今天我给大家分享一下极限存在.连续.有界.可积.可导/可微之间的关系,今天只说明在一元函数内他们之间的关系,后续给大家分享多元函数他们之间的关系. 在说明它们的关系之前,我们先说明极限存在.连续.有界 ...

  6. 连续线阵波束形成及孔径尺寸影响—麦克风阵列系列(二)

    阅读原文还请移步我的知乎专栏: https://www.zhihu.com/column/c_1287066237843951616 继上篇文章,本篇继续学习,包括内容为: 例3.1 连续线阵均匀加权 ...

  7. 提高篇 第五部分 动态规划 第5章 单调队列优化动态规划

    单调队列:是一种双端除列,其内部元素具有单调性. 最大队列 最小队列 操作: .插入:新元素插入队尾,删除除尾元素,直到找到插入后不会破坏单调性的为止. .获取最大(最小)值,访问队首元素. 单调队列 ...

  8. libev源码解析——定时器监视器和组织形式

    我们先看下定时器监视器的数据结构.(转载请指明出于breaksoftware的csdn博客) /* invoked after a specific time, repeatable (based o ...

  9. python如何返回多个值_python- 如何返回多个值 | 学步园

    如何写一个返回多个值的函数 函数的return 语句只能返回一个值,可以是任何类型. 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值 ". 例:   x 除以 y ...

  10. 后缀数组总结(转载)

    后缀数组--处理字符串的有力工具 作者:罗穗骞 2009年1月 [摘要] 后缀数组是处理字符串的有力工具.后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间 ...

最新文章

  1. Java知识系统回顾整理01基础04操作符07Scanner
  2. 十九、约束作用及常见约束
  3. exchange 2010 中OAB 排错一例
  4. 基于Xcode安装CocoaPods报错
  5. 051_InfiniteScroll无限滚动
  6. 关于IE记录Cookie的问题
  7. Codeforces Round #724 (Div. 2) 题解
  8. 玩转oracle 11g(28):ora-00064和程序异常终止
  9. 计算机毕业设计中用Java+Html+MySQL 实现注册、登录(servlet框架)-(二
  10. 导出到word时,报错
  11. 异常:Handler sending message to a Handler on a dead thread
  12. 易语言精易web浏览器填表
  13. 分体式水晶头_桌面运维小知识--六类水晶头的接线方法(分体式安装图解)
  14. 讯飞AIUI ubuntu linux使用
  15. 关于SqlServer练习题
  16. mysql怎么快速删除亿级数据_mysql数据库如何实现亿级数据快速清理
  17. Android 监听屏幕唤醒和关闭的广播
  18. python中pip如何更新到最新版本
  19. 深入浅出XDL(二):embedding
  20. 放射性核废料处理matlab模型,放射性废物处理问题模型.doc

热门文章

  1. 什么将计算机连接到网络,Windows 8.1官方教程:将电脑连接到网络-windows技巧-电脑技巧收藏家...
  2. linux 移动压缩包 命令,文件的复制、移动、压缩等对SELinux属性关系详解
  3. lcmgcd因数分解
  4. 阶段3 1.Mybatis_03.自定义Mybatis框架_2.自定义Mybatis的分析-创建代理对象的分析
  5. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_8_Stream流中的常用方法_skip...
  6. python_07 函数作用域、匿名函数
  7. UGUI ScrollRect使用
  8. linux中配置Java环境
  9. Xcode6 部署iphone4s出现的问题 No architectures to compile for
  10. SQLite 时间函数