AC日记——数据流中的算法 51nod 1785
思路:
线段树模拟;
时间刚刚卡在边界上,有时超时一个点,有时能过;
来,上代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 1000005 int n,size,cnt,ai[maxn],L[maxn<<],R[maxn<<];
int mid[maxn<<],dis[maxn<<],to,x; double sum[maxn<<],sum2[maxn<<]; inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} void tree_build(int now,int l,int r)
{
L[now]=l,R[now]=r;
if(l==r) return ;
mid[now]=l+r>>;
tree_build(now<<,l,mid[now]);
tree_build(now<<|,mid[now]+,r);
} void tree_add()
{
int now=,dis1=to*x,ss=to*dis1;
while(L[now]!=R[now])
{
dis[now]+=x,sum[now]+=dis1,sum2[now]+=ss;
if(to<=mid[now]) now=now<<;
else now=now<<|;
}
dis[now]+=x,sum[now]+=dis1,sum2[now]+=ss;
} int tree_query(int k)
{
int now=;
while(L[now]!=R[now])
{
if(k<=dis[now<<]) now=now<<;
else k-=dis[now<<],now=now<<|;
}
return L[now];
} inline void out(int X)
{
if(X>) out(X/);
putchar(X%+);
} int main()
{
int now=;in(n),in(size);
int ty;tree_build(,,);
while(n--)
{
in(ty);
if(ty==)
{
in(ai[++now]);
to=ai[now],x=,tree_add();
if(now>size) x=-,to=ai[now-size],tree_add();
continue;
}
if(ty==)
{
double res=sum[]/(double)dis[];
out((int)res),putchar('.'),putchar(''),putchar(''),putchar('\n');
continue;
}
if(ty==)
{
double p=sum[]/(double)dis[];
double res=(sum2[]-sum[]**p+p*p*dis[])/dis[];
printf("%.2lf",res),putchar('\n');
continue;
}
if(ty==)
{
int p=dis[];
if(p&) out(tree_query((p>>)+)),putchar('.'),putchar(''),putchar(''),putchar('\n');
else printf("%.2f",(double)(tree_query(p>>)+tree_query((p>>)+))/2.0),putchar('\n');
}
}
return ;
}
AC日记——数据流中的算法 51nod 1785的更多相关文章
- 51nod 1785 数据流中的算法 | STL的应用
51nod 1785 数据流中的算法 题面 动态求平均数.方差.中位数. 题解 这道题的坑: 平均数在答案中是向下取整输出并在后面添加".00" 方差:平方的平均数减去平均数的平方 ...
- 51nod 1785 数据流中的算法 (方差计算公式)
1785 数据流中的算法 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠 ...
- 【51nod 1785】数据流中的算法
Description 51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠标轨迹等特征计算用户对于网站的满意程度. 现有的统计工具只能统计某一个窗口中,用户的满意程 ...
- 【51NOD】数据流中的算法
[算法]数学 [题解] 1.平均数:累加前缀和.//听说要向下取整? 2.中位数:双堆法,大于中位数存入小顶堆,小于中位数存入大顶堆,保证小顶堆内数字数量≥大顶堆,奇数则取小堆顶,偶数则取两堆顶/2. ...
- AC日记——最小正子段和 51nod 1065
最小正子段和 思路: 找最小的大于0的sum[j]-sum[i](j>i): 高级数据结构(splay)水过: 来,上代码: #include <cstdio> #include & ...
- AC日记——计算循环节长度 51nod 1035
最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...
- [算法]最小的K个数和数据流中的中位数
1. 最小的K个数 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 思路 Java 中的PriorityQueue是 ...
- AC日记——codevs1688求逆序对
AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...
- 数据流中的中位数 Find Median from Data Stream
2019-04-17 16:34:50 问题描述: 问题求解: class MedianFinder { PriorityQueue<Integer> smaller; PriorityQ ...
随机推荐
- 各种友(e)善(xin)数论总集(未完待续),从入门到绝望
目录 快速幂 扩展欧几里得 GCD 扩展欧几里得 同余系列 同余方程 同余方程组 一点想法 高次同余方程 BSGS exBSGS 线性筛素数 埃式筛 欧拉筛 欧拉函数 讲解 两道水题 法雷级数 可见点 ...
- (ADO.NET小知识点汇总)看到什么记什么
1.数据库连接池:在同时连接数不多的情况下, 打开一个链接往数据库导1W条数据的耗时 跟 导一条数据就打开跟关闭数据库连接的耗时 两者其实相差不大,这是为什么呢?打开关闭的本身不是有很多耗时吗?这是因 ...
- dp专练
dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> ...
- 谋哥:《App自推广》连载2直立人行走迁徙
[谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代,是一个神奇的东西,它能够很快地把信息传播到其他地方,突破了短距离.然而能人的后代直立人学会了直立行走,他们开始走出非洲,到达遥远的中东.中国,还 ...
- IOS开发学习笔记005-数组
数组 数组故名思议就是一组数据的集合. int a[10];//可以存储10个整数 char c[8];//可以存储8个字符‘ 一般格式:数组类型 数组名[元素个数]: 数组元素的访问:下标,a[2 ...
- pc和移动端获取滚动条的位置
移动端获取滚动条:document.body.scrollTop pc端获取滚动条:document.documentElement.scrollTop
- LFTP下载远程文件
拓展阅读: https://linux.cn/article-5460-1.html
- 练级(train)
练级(train) 试题描述 cxm 在迷宫中练级.迷宫可以看成一个有向图,有向图的每个边上都有怪物.通过每条边并消灭怪物需要花费 \(1\) 单位时间.消灭一个怪物可以得到一定数量的经验值.怪物被消 ...
- CTSC2018 旅游记
我即使是死了,尸体烂在棺材里,也要用这腐朽的声音喊出: LJCCF!!!! DAY -3 体育中考AK了! 顿时感觉中考稳了(虽然竞赛已经特招) 新目标:我要用三种方式考上SZMS! DAY -1 成 ...
- [ACG001E] BBQ hard [dp]
题面: 传送门 思路: 首先,一个暴力的想法 对于每一对pack,求出f(ai+aj,bi+bj),其中f(x,y)=(x+y)!/(x!y!),也就是x个a,y个b的排列方式个数 然后转化模型,将f ...