#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <cctype>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std; #define res register int
inline int read()
{
int x(),f(); char ch;
while(!isdigit(ch=getchar())) if(ch=='-') f=-;
while(isdigit(ch)) x=x*+ch-'',ch=getchar();
return f*x;
} inline int max(int x,int y){return x>y?x:y;}
inline double max(double x,double y){return x>y?x:y;}
inline int min(int x,int y){return x<y?x:y;} const int N=+;
int a[N],n,k,L,R,t;
int d[N],q[N],q1[N];
double s[N];//差分数组,前缀和数组 inline bool check(double m)
{
int l=,r=; //把i看成右端点(此处取得最大s),找s[i]最小的左端点
double ans(-1e9-);
for(res i= ; i<=n ; i++)
{
if(i-L+<=) continue;
while(l<=r && s[q[r]]>=s[i-L+]) r--;
//加入i-L+1(和之前比右端点向右挪了一位)
q[++r]=i-L+;
while(i-q[l]+>R && l <= r) l++;//排除非法
if(l<=r) ans=max(ans,s[i]-s[q[l]]);
}
return ans>m*k;
} inline bool judge(double m)
{
for(res i= ; i<=n ; i++)
s[i]=s[i-]+(double)d[i]-m;
return check(m);
}
int main()
{
freopen("average.in","r",stdin);
freopen("average.out","w",stdout);
int T=read();
while(T--)
{
double maxn(0.0);
n=read(); k=read(); L=read(); R=read();
for(res i= ; i<=n ; i++) a[i]=read();
for(res i= ; i<=n ; i++) d[i]=a[i]-a[i-];
double l=,r=1e9+;
int head(),tail(),head1(),tail1();
double ans(-100000000.0);
//特殊情况,取得最大值与最小值的两端点之间的距离小于L
//此处用线段树也可以
for(res i= ; i<=n ; i++)
{
while((head<=tail) && (a[q[tail]]>a[i])) tail--;
q[++tail]=i;
while((head1<=tail1) && (a[q1[tail1]]<a[i])) tail1--;
q1[++tail1]=i;
while((head<=tail) && i-q[head]+ > L) head++;
while((head1<=tail1) &&i-q1[head1]+ > L) head1++;
ans=max(ans,(double)(a[q1[head1]]-a[q[head]]) / (double)(L+k-));
}
while(r-l>0.0000001)
{
double mid=(l+r)/;
if(judge(mid)) l=mid,ans=max(ans,l);
else r=mid;
}
//翻转过来,再求一遍,即在刚才的右端点处取得最小s
reverse(a+,a+n+);
for(res i= ; i<=n ; i++) d[i]=a[i]-a[i-];
l=,r=1e9+;
while(r-l>0.0000001)
{
double mid=(l+r)/2.0;
if(judge(mid)) l=mid,ans=max(ans,l);
else r=mid;
}
printf("%.4lf\n",ans);
}
return ;
}

2019.2.15 t3 平均值的更多相关文章

  1. Data truncation: Incorrect datetime value: 'May 15, 2019 4:15:37 PM

    因为系统在windows下测试过是正常的 windows下的jdk+ windows下安装的mysql 全部cases通过 linux下的jdk + windows下安装的mysql 新增和更新,影响 ...

  2. MyBatis 配置/注解 SQL CRUD 经典解决方案(2019.08.15持续更新)

    本文旨在记录使用各位大神的经典解决方案. 2019.08.14 更新 Mybatis saveOrUpdate SelectKey非主键的使用 MyBatis实现SaveOrUpdate mybati ...

  3. CSP-S 2019 Day 2 T3 树的重心

    CSP-S 2019 Day 2 T3 树的重心 题 给出了一个大小为\(n\)的树,树中结点从 1∼n 编号.小简单的课后作业是求出这棵树单独删去每条边后,分裂出的两个子树的重心编号和之和. \(n ...

  4. 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)

    声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...

  5. 2019.03.15 ZJOI2019模拟赛 解题报告

    得分: \(20+45+15=80\)(三题暴力全写挂...) \(T1\):Lyk Love painting 首先,不难想到二分答案然后\(DP\)验证. 设当前需验证的答案为\(x\),则一个暴 ...

  6. 第十八次CSP认证游记 | 2019.12.15

    CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...

  7. Python脱产8期 Day03 2019/4/15

    一 变量的命名规范 1.只能由 字母, 数字,  _, 组成. 2. 不能以数字开头 3.避免与系统关键字重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样来做) 4.以_开头的 ...

  8. 【2019.8.15 慈溪模拟赛 T1】插头(plugin)(二分+贪心)

    二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能 ...

  9. 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)

    卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...

随机推荐

  1. 安装操作系统CentOS-7.x

    一.创建虚拟机 使用VMware Fusion创建虚拟机 二.系统安装 为了统一环境,保证实验的通用性,将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则.所以需要在安装的时候,增加内 ...

  2. windows下的phpunit安装

    Windows Globally installing the PHAR involves the same procedure as manually installing Composer on ...

  3. 数据库版本控制工具:NeXtep Designer

    下载地址:http://pan.baidu.com/s/1dFuxKFB NeXtep Open Designer 是一个强大的多人协同/多平台的开源数据库的开发工具,致力于于自动化和生产级的集成开发 ...

  4. office excel 2010 破解版下载地址

    office excel 2010 破解版下载地址  http://www.xitongzhijia.net/soft/24189.html

  5. python用sqlite3模块操作sqlite数据库-乾颐堂

    SQLite是一个包含在C库中的轻量级数据库.它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库. 一些应用可是使用SQLite保存 ...

  6. [Jenkins] 全局变量

    http://www.360doc.com/content/14/1110/10/7811581_423993429.shtml https://wiki.jenkins.io/display/JEN ...

  7. Excel中使用VBA访问Access数据库

    VBA访问Access数据库 1. 通用自动化语言VBA VBA(Visual Basic For Application)是一种通用自动化语言,它可以使Excel中的常用操作自动化,还可以创建自定义 ...

  8. Storm中并行度原来是这样计算的(1.0.1版本)

    ==思考问题1== 向集群提交一个拓扑的时候,Storm是如何计算Task数以及Executor数的? 具体有多少个worker,多少个executor,每个executor负责多少个task? == ...

  9. 4619 Warm up 2

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ][]; ...

  10. [欣赏代码片段] (JavaScript) Responsive jQuery

    jQuery(document).ready(function($) { /* getting viewport width*/ var responsive_viewport = $(window) ...