题意

给出一个序列,求长度小于等于k的最大区间和并输出起点和终点

1<=n<=100000

1<=k<=n

 

题解:先算出前缀和,利用单调队列的性质,在单调队列中存储sum[] 的下标,并保持队列中的前缀和是保持递增的。

类似题 hdu3415

#include<stdio.h>
#include<iostream>
using namespace std;
#define de(x) cout<<#x<<" = "<<x<<endl
const int N = 100010;
const int inf = 100000010;
int que[N],sum[N];
int main()
{
int n,k,a,i,ans,ans1,ans2;
int front,tail;
scanf("%d%d",&n,&k);
sum[0]=0;
for(i=1;i<=n;i++)
{
scanf("%d",&a);
sum[i]=sum[i-1]+a;
}
front = 0;tail = 0;
ans=-inf;
for(i=1;i<=n;i++)
{
while(tail>front&&sum[i-1]<sum[que[tail-1]])
tail--;
que[tail++]=i-1;
while(tail>front&&i-que[front]>k)
front++;
if(ans<sum[i]-sum[que[front]])
{
ans=sum[i]-sum[que[front]];
ans1=que[front]+1;
ans2=i;
}
}
printf("%d %d %d",ans,ans1,ans2);
}

最新文章

  1. 【转】修改LINUX时间
  2. 我为什么要拒绝Ctrl+C和Ctrl+V?
  3. 微信公共平台php用$GLOBALS[&quot;HTTP_RAW_POST_DATA&quot;]收不到信息解决方法
  4. plsql如果表和函数等显示不出来
  5. 听同事讲 Bayesian statistics: Part 1 - Bayesian vs. Frequentist
  6. 山东省赛J题:Contest Print Server
  7. C#调用VB6写的ActiveX Dll
  8. JVM 重排序
  9. Linux KVM 安装配置
  10. Bootstrap框架的要点--栅格系统
  11. 情景linux--shell如何实现多线程?
  12. POJ 2299 -Ultra-QuickSort-树状数组求逆序数
  13. java去除html代码中含有的html、js、css标签,获取文字内容
  14. 网页编程工具:EditPlus
  15. OC变量限定符和属性限定符
  16. airflow docker
  17. .net Core 依赖注入 Add********说明
  18. linux安全分析
  19. 使用WebDAV实现Office文档在线编辑
  20. python图片处理(一)

热门文章

  1. Python3.x:定义一个类并且调用
  2. 20145313张雪纯 《Java程序设计》第5周学习总结
  3. Kali视频学习1-5
  4. 单调队列:temperature
  5. openwrt如何查看当前使用的硬件平台
  6. JS 如何获取当前上一个月、下一个月和月份所含天数
  7. java代码实现JVM栈溢出,堆溢出
  8. HttpServlet实现serializable
  9. shell统计各省的百强县
  10. u-boot-2015.07 autoconf.mk生成过程分析