#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. 由Strurts2漏洞引开谈谈web代码安全问题

    漏洞与补丁齐飞,蓝屏共死机一色. 最近struts2的安全漏洞影响面甚广,此后门为可以在url中直接远程调用脚本的漏洞和一个重定向漏洞.大家可以在s2-016远程执行脚本漏洞和s2-017重定向开放漏 ...

  2. Opencv 计算图片旋转角度

    vector<vector<Point>> vec_point;vector<Vec4i> hireachy;findContours(img_canny1, ve ...

  3. 2015年2月编程语言排行榜:JavaScript排名达到历史最高

    JavaScript在赢得2014年最后一个月的TIOBE编程语言奖后,并且还在不断走强.在二月份JavaScript就超过了PHP,并 且达到它有史以来最高的位置,排行到TOP 6.另一方面,Obj ...

  4. [SoapUI] 如何让某个步骤的Assertion失败之后继续执行后面的步骤

    To continue tests executing after failed test step you need disable "Abort on error" optio ...

  5. 设计模式(java的23种设计模式)

    转自:leshui http://blog.csdn.net/leshui/article/details/11951 在java版看见了这篇文章,作者以轻松的语言比喻了java的32种模式,有很好的 ...

  6. Mybatis:传入参数方式以及#{}与${}的区别

    一.在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和 ...

  7. 用jvm指令分析String 常量池

    其他博友的不同理解方式:  http://hi.baidu.com/boywell/item/d5ee5b0cc0af55c875cd3cfd 我们先来看一个类 public class javaPT ...

  8. 杂谈之界面设计和UI测试 (一)

    界面设计,是设计师的工作,UI测试,是测试人员的工作,UI测试究竟是测什么的?界面的排版布局?还是界面文字的书写错误?如果是排版布局,那么设计师该不会傻到设计一个看起来很不友好的界面,坐等测试人员发现 ...

  9. HBASE的优化、hadoop通用优化,Linux优化,zookeeper优化,基础优化

    HBase 的优化3.1.高可用在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果Hmaster 挂掉了,那么整个 HBa ...

  10. Intel Galileo development documentation

    Intel Galileo development Documentation Author:Liutianchen 1552227, Department of Computer Science,E ...