#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long int64;
const double eps=1e-;
const int maxn=;
int n,a[maxn],sum[maxn],pos[maxn];
double l,r,mid,ans,b[maxn],s[maxn],list[maxn];
int64 k;
int lowbit(int x){return x&(-x);}
void insert(int x){for (int i=x;i<=n+;i+=lowbit(i)) sum[i]++;}
int64 query(int x){
int64 temp=;
for (int i=x;i;i-=lowbit(i)) temp+=sum[i];
return temp;
}
bool judge(double num){
memset(sum,,sizeof(sum)); b[]=;
for (int i=;i<=n;i++) b[i]=a[i]-num;
for (int i=;i<=n;i++) s[i]=s[i-]+b[i],list[i]=s[i];
list[n+]=; sort(list+,list+n+);
for (int i=;i<=n;i++) pos[i]=lower_bound(list+,list+n+,s[i])-list;
pos[]=lower_bound(list+,list+n+,)-list;
int64 tot=;
insert(pos[]);
for (int i=;i<=n;i++) tot+=query(pos[i]),insert(pos[i]);
return tot>=k;
}
int main(){
scanf("%d%lld",&n,&k);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
l=1.0,r=100000.0;
while (l+eps<r){
mid=(l+r)/2.0;
if (judge(mid)) l=mid;
else r=mid;
}
printf("%.4lf\n",l);
return ;
}

题目大意:

LYK有一个长度为n的序列a。

他最近在研究平均数。
他甚至想知道所有区间的平均数,但是区间数目实在太多了。
为了方便起见,你只要告诉他所有区间(n*(n+1)/2个区间)中第k大的平均数就行了。
做法:二分很容易理解,问题转化为有多少个区间的平均数>=x,对于平均数,我们把每个数减去x,若该区间的sum大于等于0,则说明该区间的平均数大于等于x,那么问题便进一步的转化为有多少个区间的和非负,这个可以在nlogn的时间内求出,求出前缀和并离散化后,用线段树或树状数组可以求出来,时间总复杂度为nlognlogR,可以过,这是我的运行情况:Accepted 1500 ms 5592 KB 。

最新文章

  1. VS 2015 Enterprise第二大坑
  2. Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
  3. JAVA 设计模式 解释器模式
  4. Application对象、Session对象、Cookie对象、Server对象初步认识
  5. 【Qt】Qt之进程间通信(共享内存)【转】
  6. NOI2005瑰丽华尔兹
  7. HDU1106
  8. 使用requireJs的方法
  9. 第五章 使用 SqlSession
  10. VB.NET版机房收费系统---异常处理
  11. String的replaceAll()用法详解
  12. LeetCode 70 - 爬楼梯 - [递推+滚动优化]
  13. Cleanmymac X好不好用?
  14. Kotlin的参考资料
  15. IIS 未能加载文件或程序集“System.Web.Mvc, Version=5.2
  16. Light OJ 1296:Again Stone Game(SG函数打表找规律)
  17. JS push对象
  18. 机器学习之路: python nltk 文本特征提取
  19. java防止sql注入
  20. atan2()如何转换为角度

热门文章

  1. 尝试HTML + JavaScript 编写Windows App
  2. [转]使用 google gson 转换Timestamp或Date类型为JSON字符串.
  3. 分布式消息系统:Kafka
  4. FPGA中的INOUT接口和高阻态
  5. 程序猿看小说还要去找TXT?自己动手爬一个TXT才是正确的打开方式
  6. 用node.js实现简单的web服务器
  7. Bootstrap系列 -- 44. 分页导航
  8. Bootstrap系列 -- 43. 固定导航条
  9. WCF x509证书安装问题汇总
  10. 揭秘Facebook首个数据中心:全球15亿用户的账户信息都在这里