【 问题描述】
有一天, 小 A 得到了一个长度为 n 的序列。
他把这个序列的所有连续子序列都列了出来, 并对每一个子序列
都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,
最后他报出了第 k 小的平均值。
你要做的就是模仿他的过程。
【 输入格式】
第一行两个整数 n,k, 意义如题中所述。
第二行 n 个正整数, 即为小 A 得到的序列。
【 输出格式】
一行一个实数, 表示第 k 小的平均值, 保留到小数点后 4 位。
【 样例输入输出】

ave.in ave.out
6 10
3 5 4 6 1 2
3.6667

【 数据范围与约定】
对于 40%的数据, n≤1000
对于 100%的数据, n≤100000, k≤n*(n+1)/2, 序列中的数≤109

/*
第 k 大不易直接求, 我们想到二分, 则原问题转变为求区间平均
值小于 x 的区间数量。 考虑把序列中的每个数减去 x, 则我们只需求
区间和小于 0 的区间数量。 我们对这个序列求前缀和, 则区间[l,r]和
小于 0 当且仅当 Sl-1> Sr , 答案即为前缀和序列 S 的逆序对数量, 使
用经典的归并排序即可解决, 时间复杂度 O(nlog2n)。
*/
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
typedef double db;
typedef long long ll;
const int N=;
const db eps=1e-;
db b[N],c[N];
int a[N];
ll ans=;
int n;
void solve(int l,int r){
if(l==r) return;
int M=l+r>>;
solve(l,M);solve(M+,r);
int i=l,j=M+,k=l-;
while(i<=M&&j<=r){
if(b[i]<b[j]) c[++k]=b[i++];
else c[++k]=b[j++],ans+=M-i+;
}
while(i<=M) c[++k]=b[i++];
while(j<=r) c[++k]=b[j++];
for(i=l;i<=r;i++) b[i]=c[i];
}
ll calc(db x){
b[]=;
for(int i=;i<=n;i++) b[i]=a[i]-x+b[i-];
ans=;
solve(,n);
return ans;
}
int main(){
freopen("ave.in","r",stdin);
freopen("ave.out","w",stdout);
int mx=,i;
db lb,rb,mid;
ll x;
scanf("%d %lld",&n,&x);
for(i=;i<=n;i++) scanf("%d",&a[i]),mx=max(mx,a[i]);
lb=;rb=mx;
while(rb-lb>eps){
mid=(lb+rb)/;
if(calc(mid)<x) lb=mid;
else rb=mid;
}
printf("%.4lf\n",lb);
return ;
}

最新文章

  1. centos7.0 下安装git(ssh方式)
  2. jsp添加背景音乐
  3. png图片制作任意颜色的小图标
  4. smarty中增加类似foreach的功能自动加载数据方法
  5. 打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法
  6. 直接双击运行PowerShell的脚本文件
  7. 实现listview的条目点击后改变背景颜色
  8. LeetCode Path Sum II (DFS)
  9. Selenium 疑问之二:如何使页面滚动条移动到指定元素element的位置处?
  10. python重要的函数代码块
  11. Nginx的安装及反向代理设置
  12. ORACLE Recyclebin管理及flashback recyclebin中的对象
  13. NPOI实现Excel导入导出
  14. Oracle SQL自带函数整理
  15. 【转】如何将qlv格式的腾讯视频转换为mp4格式
  16. 1.使用C++封装一个链表类LinkList
  17. 简单SQL注入
  18. [POI2010]KLO-Blocks——一道值得思考的题
  19. 自动化监控白皮书——WAS监控
  20. shell之使用paste命令按列拼接多个文件

热门文章

  1. windows核心编程读后感(待续)
  2. 使用convert来批量处理图片
  3. DirectX的引用找不到问题
  4. java.lang.UnsupportedOperationException: Not supported by BasicDataSource
  5. 05.K米评测
  6. BZOJ3813: 奇数国
  7. JS-Array数组对象
  8. BZOJ4527: K-D-Sequence 线段树
  9. B450黑苹果之路(1)
  10. jquery ajax rest invoke