51nod平均数
2024-10-19 00:23:23
#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 。
最新文章
- VS 2015 Enterprise第二大坑
- Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
- JAVA 设计模式 解释器模式
- Application对象、Session对象、Cookie对象、Server对象初步认识
- 【Qt】Qt之进程间通信(共享内存)【转】
- NOI2005瑰丽华尔兹
- HDU1106
- 使用requireJs的方法
- 第五章 使用 SqlSession
- VB.NET版机房收费系统---异常处理
- String的replaceAll()用法详解
- LeetCode 70 - 爬楼梯 - [递推+滚动优化]
- Cleanmymac X好不好用?
- Kotlin的参考资料
- IIS 未能加载文件或程序集“System.Web.Mvc, Version=5.2
- Light OJ 1296:Again Stone Game(SG函数打表找规律)
- JS push对象
- 机器学习之路: python nltk 文本特征提取
- java防止sql注入
- atan2()如何转换为角度
热门文章
- 尝试HTML + JavaScript 编写Windows App
- [转]使用 google gson 转换Timestamp或Date类型为JSON字符串.
- 分布式消息系统:Kafka
- FPGA中的INOUT接口和高阻态
- 程序猿看小说还要去找TXT?自己动手爬一个TXT才是正确的打开方式
- 用node.js实现简单的web服务器
- Bootstrap系列 -- 44. 分页导航
- Bootstrap系列 -- 43. 固定导航条
- WCF x509证书安装问题汇总
- 揭秘Facebook首个数据中心:全球15亿用户的账户信息都在这里