HDU2993_MAX Average Problem
题目要求你在n个数的序列中,找出一段连续的长度不小于k的连续的序列,使得这个序列的平均数最大。输出这个平均数。
典型的优先队列。首先我们需要根据输入的序列,制造一个和序列。
然后从k开始往后面走,其实每走一步都维护了一下优先队列,然后加入当前的这个数。
很简单吧应该。。。。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 100100
using namespace std; int a[maxn],tep,n,k,tot,sum[maxn];
int head,tail,j;
int q[maxn];
double ans,tmp,dx1,dx2,dy1,dy2;
char c; int getnum()
{
tot=;
c=getchar();
while (c<'' || c>'') c=getchar();
while (c>='' && c<='') tot=tot*+c-'',c=getchar();
return tot;
} int main()
{ while (scanf("%d%d",&n,&k)!=EOF)
{
tep=;
for (int i=; i<=n; i++) a[i]=getnum(),tep+=a[i],sum[i]=tep;
head=,tail=;
ans=;
for (int i=k; i<=n; i++)
{
j=i-k;
while (tail-head>=)
{
dx1=q[tail]-q[tail-];
dy1=sum[q[tail]]-sum[q[tail-]];
dx2=j-q[tail];
dy2=sum[j]-sum[q[tail]];
if (dy2*dx1<=dy1*dx2) tail--;
else break;
}
q[++tail]=j;
while (tail-head>=)
{
dx1=i-q[head];
dy1=sum[i]-sum[q[head]];
dx2=i-q[head+];
dy2=sum[i]-sum[q[head+]];
if (dy2*dx1>=dy1*dx2) head++;
else break;
}
tmp=(sum[i]-sum[q[head]])*1.0/(i-q[head]);
ans=max(ans,tmp);
}
printf("%.2f\n",ans);
}
return ;
}
HDU2993_MAX Average Problem的更多相关文章
- HDU 2993 MAX Average Problem dp斜率优化
		MAX Average Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ... 
- 数据结构:HDU 2993 MAX Average Problem
		MAX Average Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ... 
- MAX Average Problem(斜率优化dp)
		MAX Average Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ... 
- hdu 2993 MAX Average Problem(斜率DP入门题)
		题目链接:hdu 2993 MAX Average Problem 题意: 给一个长度为 n 的序列,找出长度 >= k 的平均值最大的连续子序列. 题解: 这题是论文的原题,请参照2004集训 ... 
- BNUOJ 3958 MAX Average Problem
		MAX Average Problem Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Jav ... 
- HDU 2993 MAX Average Problem(斜率优化)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 Problem Description Consider a simple sequence w ... 
- HDU 2993 - MAX Average Problem - [斜率DP]
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 Consider a simple sequence which only contains p ... 
- HDU 2993 MAX Average Problem(斜率优化DP)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 题目大意:给定一个长度为n(最长为10^5)的正整数序列,求出连续的最短为k的子序列平均值的最大 ... 
- hdu2993 MAX Average Problem (斜率dp)
		参考:http://www.cnblogs.com/kuangbin/archive/2012/08/27/2657878.html //#pragma warning (disable: 4786) ... 
随机推荐
- Java第五次实验报告
			Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ... 
- 2016-2017-2 20155302 实验二《Java面向对象程序设计》实验报告
			2016-2017-2 20155302 实验二<Java面向对象程序设计>实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握U ... 
- (三)虚拟机与Linux新尝试——20155306白皎
			(三)虚拟机与Linux新尝试--20155306白皎 一.关于虚拟机的安装 在选择虚拟机的类型和版本时,Ubuntu只有32位,没有64位 解决:通过百度,后来也发现同学们好多遇到了这个问题,因此通 ... 
- 20155318 《Java程序设计》实验四 (Android程序设计)实验报告
			20155318 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ... 
- 20155321 2016-2017-2《Java程序设计》课程总结
			20155321 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:学习情况的相关调查 预备作业3:安装虚拟机以及学习Linu ... 
- 2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现
			2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现 学习pwd命令 通过man命令查看pwd命令的功能 由图可知pwd命令的用途是显示工作目录的路径名称.pwd 命令 ... 
- 3110: [Zjoi2013]K大数查询
			3110: [Zjoi2013]K大数查询 https://lydsy.com/JudgeOnline/problem.php?id=3110 分析: 整体二分+线段树. 两种操作:区间加入一个数,区 ... 
- SaltStack入门篇(三)之数据系统Grains、Pillar
			1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ... 
- [转]关于PreparedStatement.addBatch()方法
			Statement和PreparedStatement的区别就不多废话了,直接说PreparedStatement最重要的addbatch()结构的使用. 1.建立链接,(打电话拨号 ) Connec ... 
- Ajax文件上传三式
			文件上传(三式) 1.urls.py文件 url(r'^upload.html$', views.upload), 2.views.py文件 import os def upload(request) ... 
