Description

51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间、鼠标轨迹等特征计算用户对于网站的满意程度。
 
现有的统计工具只能统计某一个窗口中,用户的满意程度的均值。夹克老爷想让你为统计工具添加一个新feature,即在统计均值的同时,计算窗口中满意程度的标准差和中位数(均值需要向下取整)。

Input

第一行是整数n与k,代表有n次操作,时间窗口大小为k。 
(1 <= n <= 10^6, 1 <= k <= 100) 接下来的n行,每行代表一次操作。操作有“用户访问”、“查询均值”、“查询方差”、“查询中位数”四种。每行的第一个数代表操作类型。 操作数1:用户访问
输入格式:<1, v>
用户的满意度v为闭区间[0, 100]中的任意整数。用户每访问一次,数据更新,移动统计窗口。 操作数2:查询均值
输入格式:<2>
统计窗口内的用户满意度的均值。 操作数3:查询方差
输入格式:<3>
统计窗口内用户满意度的方差 操作数4:查询中位数
输入格式:<4>
统计窗口内用户满意度的中位数 p.s. 在有查询请求时,窗口保证不为空
p.s.s. 有查询请求时,窗口可能不满

Output

对于“查询均值”、“查询方差”、“查询中位数”操作的结果,输出保留两位小数。

Input示例

12 3
1 1
1 2
1 3
2
3
4
1 4
1 5
1 6
2
3
4

Output示例

2.00
0.67
2.00
5.00
0.67
5.00 其实难度主要在中位数……感谢隔壁大佬的思路。
因为v为闭区间[0, 100]中的任意整数,所以开个桶存一下就好了,每次查询中位数时,从0开始向后扫。
 #include<stdio.h>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,sum,p,num,k,now,cnt,s[],a[];
int read()
{
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int main()
{
n=read();k=read();
while(n--)
{
p=read();
if(p==)
{
num=read();
a[++cnt]=num;
if(now==k)sum=sum-a[cnt-k]+num,s[a[cnt-k]]--;
else now++,sum+=num;
s[num]++;
}
else if(p==)printf("%.2lf\n",floor((double)sum/now));
else if(p==)
{
double w=(double)sum/now,ans=;
for(int i=cnt-now+;i<=cnt;i++)ans+=((double)a[i]-w)*((double)a[i]-w);
printf("%.2lf\n",ans/now);
}
else
{
if(now%)
{
int pos=now/+,ans=;
for(int i=;i<=;i++)
{
ans+=s[i];
if(ans>=pos)
{
printf("%.2lf\n",(double)i);
break;
}
}
}
else
{
int pos1=now/,pos2=now/+,st=-,ed=-,ans=;
for(int i=;i<=;i++)
{
ans+=s[i];
if(ans>=pos1&&st==-)st=i;
if(ans>=pos2&&ed==-)ed=i;
if(st!=-&&ed!=-)
{
printf("%.2lf\n",(double)(st+ed)/);
break;
}
}
}
}
}
return ;
}

【51nod 1785】数据流中的算法的更多相关文章

  1. 51nod 1785 数据流中的算法 | STL的应用

    51nod 1785 数据流中的算法 题面 动态求平均数.方差.中位数. 题解 这道题的坑: 平均数在答案中是向下取整输出并在后面添加".00" 方差:平方的平均数减去平均数的平方 ...

  2. 51nod 1785 数据流中的算法 (方差计算公式)

    1785 数据流中的算法 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 难度:3级算法题   51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠 ...

  3. 【51NOD】数据流中的算法

    [算法]数学 [题解] 1.平均数:累加前缀和.//听说要向下取整? 2.中位数:双堆法,大于中位数存入小顶堆,小于中位数存入大顶堆,保证小顶堆内数字数量≥大顶堆,奇数则取小堆顶,偶数则取两堆顶/2. ...

  4. AC日记——数据流中的算法 51nod 1785

    数据流中的算法 思路: 线段树模拟: 时间刚刚卡在边界上,有时超时一个点,有时能过: 来,上代码: #include <cstdio> #include <cstring> # ...

  5. [算法]最小的K个数和数据流中的中位数

    1. 最小的K个数 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 思路 Java 中的PriorityQueue是 ...

  6. 数据流中的中位数 Find Median from Data Stream

    2019-04-17 16:34:50 问题描述: 问题求解: class MedianFinder { PriorityQueue<Integer> smaller; PriorityQ ...

  7. [LeetCode解题报告] 703. 数据流中的第K大元素

    题目描述 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包 ...

  8. 剑指offer63:数据流中的中位数

    题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...

  9. Motion Detection Algorithms视频中运动检测算法源代码及演示代码

    原文地址:http://www.codesoso.com/code/Motion_Detection.aspx 本文实现了在连续视频数据流中几种不同的运动检测算法,他们都是基于当前帧图像和前一帧图像的 ...

随机推荐

  1. CANOE入门(一)

    CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多. 硬件我使用的是CAN case XL. 1,CANoe软件的安装很简单,先 ...

  2. 微信支付退款(PHP后端)

    应用场景 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上. 微信 ...

  3. wildfly access log 开启

    对于一个网站来说,访问日志,即access_log,是一项很重要的功能.利用它,我们可以统计出很多有用的信息,我们可以利用log来对整个网站的运行做有效的监控和分析,从而提升网站的性能. 在WildF ...

  4. 【洛谷P1303 A*B Problem】

    题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 emm,显然本 ...

  5. Codeforces Round #523 (Div. 2) C Multiplicity (DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/10005351.html 题意: 给定一数组a[],从a[ ]中除去任意个元素得到b[ ],求能形成多少“好序列 ...

  6. webDriver文档阅读笔记

    一些雷 浏览器版本和对应的Driver的版本是一一对应的,有时候跑不起来,主要是因为driver和浏览器版本对不上. e.g: chrome和driver版本映射表:https://blog.csdn ...

  7. selinux 的使用

    SELinux 的启动.关闭与查看 1,并非所有的 Linux distributions 都支持 SELinux 的 目前 SELinux 支持三种模式,分别如下: •enforcing:强制模式, ...

  8. Luogu P4248 [AHOI2013]差异

    题目链接 \(Click\) \(Here\) 神仙题.或者可能我太菜了没见过后缀数组的骚操作,然后就被秀了一脸\(hhhhh\) \[\sum\limits_{1<=i < j < ...

  9. 解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法

    我是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403, 于是查看nginx日志,路径为/var/log/nginx/error.log.打开日志发现报错Permissio ...

  10. okhttp添加自定义cookie

        package cn.x.request; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...