题目描述
LYK有一本书,上面有很多有趣的OI问题。今天LYK看到了这么一道题目:
这里有一个长度为n的正整数数列ai(下标为1~n)。并且有一个参数k。
你需要找两个正整数x,y,使得x+k<=y,并且y+k-1<=n。并且要求a[x]+a[x+1]+…+a[x+k-1]+a[y]+a[y+1]+…+a[y+k-1]最大。
LYK并不会做,于是它把题扔给了你。

输入格式(max.in)
第一行两个数n,k。
第二行n个数,表示ai。

输出格式(max.out)
两个数表示x,y。若有很多种满足要求的答案,输出x最小的值,若x最小仍然还有很多种满足要求的答案,输出y最小的值。

输入样例
5 2
6 1 1 6 2

输出样例
1 4

对于30%的数据n<=100。
对于60%的数据n<=1000
对于100%的数据1<=n<=100000,1<=k<=n/2,1<=ai<=10^9。

分析:一个O(n^3)的做法,直接枚举两个区间,再枚举求区间和.因为用到了区间和,所以可以用前缀和优化到O(n^2).然后可以发现这个区间长度是固定的,我们可以在挪动右端点的时候右边每加一个数,左边弹一个数,用O(n)的时间处理出每一段长度为k的区间的和,在处理的过程中可以顺便记录j-k之前的区间最大值,一边求和一边统计答案就可以了.

#include <bits/stdc++.h>

using namespace std;

int n,k,lastt = ,x,y;
long long a[],r[],Max,sum,ans; int main()
{
freopen("max.in","r",stdin);
freopen("max.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i = ; i <= n; i++)
scanf("%lld",&a[i]);
for (int i = ; i <= n; i++)
{
sum += a[i];
if (i - k > )
sum -= a[i - k];
r[i] = sum;
if (i - k > )
{
if (Max < r[i - k])
{
Max = max(Max,r[i - k]);
lastt = i - k;
}
}
if (Max + r[i] > ans)
{
ans = max(ans,Max + r[i]);
x = max(,lastt - k + );
y = max(,i - k + );
}
}
printf("%d %d\n",x,y); return ;
}

最新文章

  1. Python AES - base64 加解密
  2. OpenGL渲染流程
  3. MySQL调优系列_日志分析
  4. AVA数据库连接池.
  5. Java 集合 - HashSet
  6. cordova-sqlite-plugin常用数据库操作
  7. iOS开发UI篇—Quartz2D(自定义UIImageView控件)
  8. 代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据
  9. BZOJ 4552 排序
  10. 自定义控件(视图)2期笔记03:自定义控件之使用系统控件(优酷案例之广告条Viewpager)
  11. 关于Spring的69个面试问答——终极列表
  12. EverNote剪藏插件安装问题
  13. hadoop记录-hive常见设置
  14. 利用Clang(Python接口)来解析C++
  15. Clustered Shading架构实现步骤
  16. 解决IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
  17. BZOJ 3331 [BeiJing2013]压力-Tarjan + 树上差分
  18. linux下使用软连接之案例二
  19. 解决Windows x86网易云音乐不能将音乐下载到SD卡的BUG
  20. 自定义View 水印布局 WaterMark 前景色 MD

热门文章

  1. 编译android4.4 报错error: call to &#39;__property_get_too_small_error&#39; declared with attribute 的处理 (转载)
  2. [Apple开发者帐户帮助]九、参考(4)支持的功能(macOS)
  3. [Swift通天遁地]六、智能布局-(4)给视图添加锚点约束
  4. SpringBoot 热部署 + IDEA
  5. 普通平衡树代码。。。Treap
  6. ACM_尿裤子
  7. excel另存为csv
  8. Android 微信分享不出去?四步搞定!
  9. Android 串口驱动和应用测试
  10. Ajax——jq中ajax的使用