2019.2.15 t3 平均值
#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 平均值的更多相关文章
- Data truncation: Incorrect datetime value: 'May 15, 2019 4:15:37 PM
因为系统在windows下测试过是正常的 windows下的jdk+ windows下安装的mysql 全部cases通过 linux下的jdk + windows下安装的mysql 新增和更新,影响 ...
- MyBatis 配置/注解 SQL CRUD 经典解决方案(2019.08.15持续更新)
本文旨在记录使用各位大神的经典解决方案. 2019.08.14 更新 Mybatis saveOrUpdate SelectKey非主键的使用 MyBatis实现SaveOrUpdate mybati ...
- CSP-S 2019 Day 2 T3 树的重心
CSP-S 2019 Day 2 T3 树的重心 题 给出了一个大小为\(n\)的树,树中结点从 1∼n 编号.小简单的课后作业是求出这棵树单独删去每条边后,分裂出的两个子树的重心编号和之和. \(n ...
- 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...
- 2019.03.15 ZJOI2019模拟赛 解题报告
得分: \(20+45+15=80\)(三题暴力全写挂...) \(T1\):Lyk Love painting 首先,不难想到二分答案然后\(DP\)验证. 设当前需验证的答案为\(x\),则一个暴 ...
- 第十八次CSP认证游记 | 2019.12.15
CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...
- Python脱产8期 Day03 2019/4/15
一 变量的命名规范 1.只能由 字母, 数字, _, 组成. 2. 不能以数字开头 3.避免与系统关键字重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样来做) 4.以_开头的 ...
- 【2019.8.15 慈溪模拟赛 T1】插头(plugin)(二分+贪心)
二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能 ...
- 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)
卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...
随机推荐
- linux常用的一些命令行操作(ubuntu)
软件安装 sudo apt-get install xxx 压缩和解压缩 1. *.tar 用 tar –xvf 解压 2. *.gz 用 gzip -d或者gunzip 解压 3. *.tar.gz ...
- laravel @if
- 白盒测试实践--Day0
白盒测试实践--Day0 累计完成任务情况: 阶段内容 参与人 开会学习作业要求,取得共识 全体 注: 1."阶段内容"划斜线表示完成. 2.采用倒序. 具体情况: 组长提前组织分 ...
- 高并发Redis(Mac)环境配置(一)
一.产生原因: SNS交互型网站的兴起,对于高并发,大负载数据的操作,海量数据的存储和访问 NoSql四种类型: 键值存储(Redis优点可以快速查询,缺点缺少存储的结构化) ...
- Maven及POM文件
Maven Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Logback是由LOG4创始人设计的又一个开源日志组件. 相关链接: Ma ...
- C# 随机串的生成
/** * 生成随机串,随机串包含字母或数字 * @return 随机串 */ public static string GenerateNon ...
- MySQL中如何为查询的数据添加自增序号、顺序呢?
背景介绍 很多时候我们在使用mysql查询数据的时候都会遇到一个问题,就是查询出来了一堆数据,但是查询的数据的表并没有序号,然而部分数据库显示工具是有外带序号显示,但是这种序号不是由sql产生的,而是 ...
- SQL server 累加求和
1. SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS Tot ...
- IIS8如何安装和使用URL重写工具-URL Rewrite
下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...
- WCF 学习笔记
Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点.服务终结点 ...