子序列的和
Time Limit: 1000 MS Memory Limit: 32768 K
     
Description
输入一个长度为n的整数序列(A1,A2,……,An),从中找出一段连续的长度不超过m的子序列,使得这个子序列的和最大。
Input
有多组测试数据,不超过20组测试数据。
对于每组测试的第一行,包含两个整数n和m(n,m<=10^5),表示有n个数,子序列长度限制为m,表示这个序列的长度,第二行为n个数,每个数的范围为[-1000, 1000]。
Output
对于每组测试数据,输出最大的子序列和,并换行。
Sample Input
3 1
1 2 3
3 2
-1000 1000 1
Sample Output
3
1001
View Code

 1 #include <stdio.h>
 2 #include <iostream>
 3 using namespace std;
 4 const int N=100010;
 5 struct node
 6 {
 7     int v,add;
 8 }que[N],tmp;
 9 int main()
10 {
11     int p,a[N],n,m,begin,end;
12     while(scanf("%d%d",&n,&m)!=EOF)
13     {
14         a[0]=0;
15         for(int i=1;i<=n;i++)
16         {
17             scanf("%d",&p);
18             a[i]=a[i-1]+p;
19         }
20         begin=0;
21         end=-1;
22         int _min=-100000000;
23         for(int i=1;i<=n;i++)
24         {
25             while(begin<=end&&a[i-1]<que[end].v)
26             {
27                 end--;
28             }
29             while(begin<=end&&que[begin].add<i-m)
30             {
31                 begin++;
32             }
33             tmp.add=i-1;
34             tmp.v=a[i-1];
35             que[++end]=tmp;
36
37             if(a[i]-que[begin].v>_min)
38              _min=a[i]-que[begin].v;
39         }
40         printf("%d\n",_min);
41     }
42 }

转载于:https://www.cnblogs.com/-sunshine/archive/2012/08/18/2645210.html

Hrbust 1522 利用队列求最大子序列的和相关推荐

  1. 求连续子序列平均最大权值的问题

    原题链接 求长度为n.m(<=1e5)的a,b两组数组一段长度不小于x.y的连续子序列平均最大权值. 分析: 要求一个数组a长度不小于len的连续子序列平均最大权值. 二分答案x,令b[i]=a ...

  2. 利用“队列”解决“窗口混乱”问题

    本图文利用队列这种数据结构以及多线程技术模拟了银行排队(叫号)软件的工作流程.

  3. python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...

    递归排序核心 递归排序的核心是 分与合 分的最终结果 就是将原数组中每一个数字分作一个数组, 合就是 所有小数组不断排序,合并的过程. 合并的过程是先将两个含有一个数字的数组排序,合并(每次比较两个数 ...

  4. LeetCode算法题3:求最大子序列和

    文章目录 前言 一.递归 二.求最大子序列和 1,最朴素的解法 2,较朴素的解法(更进一步) 3,分治和递归 4,精妙的解法 总结 前言 本文简单介绍递归的使用(依次打印出一个 int 整数的每一位) ...

  5. 利用队列实现车厢编组

    利用队列实现车厢编组问题.假设队列元素是char类型,'H'表示硬座,'S'表示软卧,队列A表示一组硬座和卧铺混编的车厢.要求把队列A中的硬座车厢移动到队列B,队列A中的卧铺车厢移动到队列C,同时保留 ...

  6. 递归算法经典实例_【经典算法】利用递归方法求5!

    找出数组只出现一次的数字 题目 利用递归方法求5! 示例: 输入: 5!输出: 120 思路: 当传入5时,5>1,所以返回recursion(4)*5; recursion(4)则调用recu ...

  7. 用计算机计算最大公因数,利用计算器求两个较大数的最大公约数的简便方法

    !塑!垒三塑圭 ke.xuejiaoyujia 数学教育研究 利用计算器求两个较大数的最大公约数的简便方法 胡苏琦 (中山一中广东中山528400) 在高一数学必修A3课本中这一章介绍了如何求两 个较 ...

  8. 利用函数求数组中的最大值

    利用函数求数组中的最大值 <!DOCTYPE html> <html lang="en"><head><meta charset=&quo ...

  9. 利用函数求任意两个数之间的和

    利用函数求任意两个数之间的和 <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  10. 利用函数求两个数的最大值

    利用函数求两个数的最大值 <!DOCTYPE html> <html lang="en"><head><meta charset=&quo ...

最新文章

  1. 105_键盘事件对象
  2. ssh登录慢,等待时间长的问题
  3. 如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service
  4. timestamp显示毫秒_mysql解决datetime与timestamp精确到毫秒的问题
  5. 2万月薪招聘名校学生养猪:不好好学习,养猪都不要你
  6. Python 3.x 中“HTTP Error 403: Forbidden“问题的解决方案
  7. 有趣的mysql string和0比较返回1的问题
  8. 6.jQuery appendTo问题解决
  9. 数据包接收系列 — 上半部实现(网卡驱动)
  10. Java网络编程(9)NIO - 群聊系统
  11. uploadify java实例_java uploadify 例子
  12. 我是全网最硬核的高并发编程作者,CSDN最值得关注的博主,大家同意吗?(建议收藏)
  13. WPS宏不可用解决方法
  14. An effective intrusion-resilient mechanism for PLCs against data tampering attacks
  15. 视觉SLAM14讲笔记02:ch5针孔,双目相机模型
  16. 模拟CS (警察和匪徒)
  17. 牵线搭桥!让用户更高效地完成表单填写
  18. HTML/CSS学习笔记(1)
  19. The props`strategy` cannot be null when uses class based sharding strategy
  20. PDF删除水印与添加水印方法介绍

热门文章

  1. JDBC14 ORM03 JavaBean封装
  2. make: 未找到命令
  3. 十、Shell脚本编程
  4. Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程
  5. Android 控件之 Date Time 组件
  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
  7. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_2 RequestBody注解
  8. 运算符优先级(cpp/c)
  9. export default 和 export 的使用方式(六)
  10. 【转载】【SQL】Sql Server Management Studio 18 打开闪退问题