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) ...
随机推荐
- 20155301第十一周java课栈程序
20155301第十一周java课栈程序 内容一:后序表达式: abcde/-f+ 内容二:根据填充以下代码: import java.util.Scanner; public class MyDCT ...
- WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书
原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...
- 【LG3229】[HNOI2013]旅行
题面 洛谷 题解 勘误:新的休息点a需要满足的条件2为那一部分小于等于ans 代码 \(100pts\) #include <iostream> #include <cstdio&g ...
- SRM 698 div1 RepeatString
250pts RepeatString 题意:问最少修改多少次将一个字符串修改为AA的形式.可以插入一个字符,删除一个字符,修改字符. 思路:枚举分界点,然后dp一下. /* * @Author: m ...
- 3060 抓住那头奶牛 USACO
3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它, ...
- 区块链技术:每位CEO都应了解
区块链技术有可能成为一项广泛应用的突破性技术,像蒸汽机.电力或因特网那 样,改变整个社会和经济的运行方式. 对企业而言,信任至关重要.今天,我们基于信任,将钱存放在银行,通过电商企业 网购产品,并且依 ...
- 利用Tensorflow进行自然语言处理(NLP)系列之二高级Word2Vec
本篇也同步笔者另一博客上(https://blog.csdn.net/qq_37608890/article/details/81530542) 一.概述 在上一篇中,我们介绍了Word2Vec即词向 ...
- 集合set、map、list
一.set 无序.可重复 public static void main(String[] args){ Set<String> set=new HashSet<String> ...
- 你应该知道的PHP库
Libchart – 这也是一个简单的统计图库. JpGraph – 一个面向对象的图片创建类. Open Flash Chart – 这是一个基于Flash的统计图. RSS 解析 解释RSS并是一 ...
- preg_replace 以及弃用的e
preg_replace (PHP 4, PHP 5) preg_replace — 执行一个正则表达式的搜索和替换 说明¶ mixed preg_replace ( mixed $pattern , ...