清北学堂模拟赛d2t4 最大值(max)
2024-09-07 19:14:48
题目描述
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 ;
}
最新文章
- Python AES - base64 加解密
- OpenGL渲染流程
- MySQL调优系列_日志分析
- AVA数据库连接池.
- Java 集合 - HashSet
- cordova-sqlite-plugin常用数据库操作
- iOS开发UI篇—Quartz2D(自定义UIImageView控件)
- 代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据
- BZOJ 4552 排序
- 自定义控件(视图)2期笔记03:自定义控件之使用系统控件(优酷案例之广告条Viewpager)
- 关于Spring的69个面试问答——终极列表
- EverNote剪藏插件安装问题
- hadoop记录-hive常见设置
- 利用Clang(Python接口)来解析C++
- Clustered Shading架构实现步骤
- 解决IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
- BZOJ 3331 [BeiJing2013]压力-Tarjan + 树上差分
- linux下使用软连接之案例二
- 解决Windows x86网易云音乐不能将音乐下载到SD卡的BUG
- 自定义View 水印布局 WaterMark 前景色 MD
热门文章
- 编译android4.4 报错error: call to &#39;__property_get_too_small_error&#39; declared with attribute 的处理 (转载)
- [Apple开发者帐户帮助]九、参考(4)支持的功能(macOS)
- [Swift通天遁地]六、智能布局-(4)给视图添加锚点约束
- SpringBoot 热部署 + IDEA
- 普通平衡树代码。。。Treap
- ACM_尿裤子
- excel另存为csv
- Android 微信分享不出去?四步搞定!
- Android 串口驱动和应用测试
- Ajax——jq中ajax的使用