题目描述
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 = 1,x,y;
long long a[100010],r[100010],Max,sum,ans;int main()
{freopen("max.in","r",stdin);freopen("max.out","w",stdout);scanf("%d%d",&n,&k);for (int i = 1; i <= n; i++)scanf("%lld",&a[i]);for (int i = 1; i <= n; i++){sum += a[i];if (i - k > 0)sum -= a[i - k];r[i] = sum;if (i - k > 0){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(1,lastt - k + 1);y = max(1,i - k + 1);}}printf("%d %d\n",x,y);return 0;
}

转载于:https://www.cnblogs.com/zbtrs/p/7622978.html

清北学堂模拟赛d2t4 最大值(max)相关推荐

  1. 清北学堂模拟赛d6t2 刀塔

    分析:看到最小值最大就很显然是二分了吧,二分一下最小值,把小于它的数给删掉,然后看每个数向左边能延伸多长,往右边能延伸多长,最后统计一下有没有可行答案就可以了. #include <cstdio ...

  2. 清北学堂模拟赛d5t4 套路

    分析:题目非常短,看起来非常难,其实把图一画就明白了.有向图,每个点的出度都是1,那么整个图肯定是环上套链,链上的边无论怎样反向都不会形成环,环上的边也可以随便反向,但是最终不能反为同向的,总方案数减 ...

  3. 清北学堂模拟赛d3t2 b

    分析:一道比较让人头疼的数学题. 先考虑怎么让分出来的三角形相似,先不考虑每个三角形的具体边长,设每个三角形的周长为li,则可知必然有一个数g = gcd{li},每一个三角形的周长都是g的倍数,这样 ...

  4. 清北学堂模拟赛d6t3 反击数

    分析:显然是一道数位dp题,不过需要一些奇怪的姿势.常规的数位dp能统计出一个区间内满足条件的数的个数,可是我们要求第k个,怎么办呢?转化为经典的二分问题,我们二分当前数的大小,看它是第几大的,就可以 ...

  5. 清北学堂模拟赛d1t1 位运算1(bit)

    题目描述 LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值.例如数字123拥有6的价值,数字999拥有27的价值. 假设数字N的价值是K,LYK想找到 ...

  6. 清北学堂模拟赛day7 错排问题

    /* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...

  7. 清北学堂模拟赛d6t4 数组异或

    分析:直接O(n^3)做是只有50分的,可以加一点小小的优化,就是c[k]可以从c[k-1]得到,但是还是只有60分,从宏观意义上是不能继续优化了.对于这类涉及到位运算的性质的题目,将每个数转化成二进 ...

  8. 清北学堂模拟赛d3t6 c

    分析:比较神奇的一道题.要把树变成环肯定要先变成链,然后把链给拼接成环.接下来考虑一个脑洞大开的树形dp:设f[i][0]表示i不与父节点相连的链数,f[i][1]表示i与父节点相连的链数,先考虑怎么 ...

  9. 2017国庆 济南清北学堂 8天乐

    Day 0 想吐槽济南的堵车 大约接近4点从莱芜走的,走高速一个多小时,5点左右就到了济南,但是因为济南的堵车,下班高峰期,用了两个多小时才到了我们的目的地.好不容易到宾馆登记了,mc还要我们开会,8 ...

最新文章

  1. ROCK 聚类算法‏
  2. 金鱼会开车?对,以色列新研究证明金鱼有陆地导航能力,还能看标志认出目的地...
  3. 【Flutter】StatelessWidget 组件 ( Container 组件 | BoxDecoration 组件 | Text 组件 | Icon 组件 )
  4. hrbust1841再就业(状态压缩dp)
  5. BZOJ 1910 [Ctsc2002] Award 颁奖典礼
  6. python的网页解析器_python 之网页解析器
  7. MATLAB小技巧(28)模糊综合评价
  8. VOC2007和VOC2012数据集下载地址
  9. 零基础手把手用solidworks教你画联轴器
  10. Git Branching
  11. java 实现站内信_群发站内信实现
  12. 做抖音自媒体能赚钱吗?
  13. Android中的动画(二)和ButterKnife (黄油刀)
  14. SW3518快充方案
  15. 【分析】CPU hotplug时进程上下文切换流程分析
  16. 问题 C: 旅行者的背包
  17. 校园版网络教学平台搭建方案(学生端)
  18. GBT 19668 (1-6)整套
  19. 京东优惠券平行式考试
  20. 刀片服务器虚拟交换机,web client6.0设置刀片服务器虚拟机网络

热门文章

  1. python123基本数据类型_python 基本数据类型
  2. 饼图大小调整_Excel图表变形计:个性化的创意饼图,原来可以很快做出来!
  3. 远程唤醒_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!
  4. 每天一道LeetCode-----找出给定序列的所有子序列
  5. stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动
  6. 1024 科学计数法 (20 分)(c语言)
  7. 高并发C/S的TCP版本golang实现
  8. LVS(10)——实现多集群功能
  9. Shell(2)——shell里面的变量
  10. iOS 应用的生命周期