51nod 1785 数据流中的算法
来源:互联网 发布:js省市区三级联动代码 编辑:程序博客网 时间:2024/06/02 06:55
这题看了好多遍,才看懂题目中k的意思,k就是每次计算最多只能到k个人
坑点是平均数那里,在计算平均数的时候,输出平均数的时候要向下取整,然后输出的时候还要保留两位小数,然而计算方差的时候,那个平均数就不能向下取整了,否则就错了。
#include <stdio.h>#include <vector>#include <algorithm>const int MAXN = 1e6+10;int que[MAXN];int prefixSum[MAXN];int head = 1;int tail = 1;int main(){ int op,n,k,sum,ave; scanf("%d %d",&n,&k); while(n--) { scanf("%d",&op); if(op == 1) { scanf("%d",&que[tail++]); prefixSum[tail-1] += prefixSum[tail-2]+que[tail-1]; if(tail - head > k) head++; } else if(op == 2) { sum = prefixSum[tail-1]-prefixSum[head-1]; ave = sum/(tail-head); printf("%.2lf\n",(double)ave); } else if(op == 3) { double dsum = prefixSum[tail-1]-prefixSum[head-1]; double dave = dsum/(tail-head); double res = 0; for(int i = head; i < tail; ++i) res += ((double)que[i]-dave)*((double)que[i]-dave); res /= (tail-head); printf("%.2lf\n",res); } else { std::vector<double> temp; for(int i = head; i < tail; ++i) temp.push_back(que[i]); std::sort(temp.begin(),temp.end()); int len = temp.size(); if(len%2 == 1) printf("%.2lf\n",temp[len/2]); else printf("%.2lf\n",(temp[len/2]+temp[len/2-1])/2.0); } } return 0;}
阅读全文
0 0
- 51Nod-1785-数据流中的算法
- 51nod-1785:数据流中的算法
- 51nod 1785 数据流中的算法
- 51nod 1785 数据流中的算法
- 51Nod 数据流中的算法
- 51Nod-数据流算法-1785
- 51nod 1785 数据流中的算法 (方差计算公式)
- 51nod 1786 数据流中的算法
- 【51nod 数据流中的算法】+ vector
- 51Nod数据流中的算法—众数
- 51Nod 1786 数据流中的算法-众数 题解
- 51nod 1785 数据流中的算法 【D(x)与E(x)+队列+线段树】
- 51Nod-TalkingData数据科学精英夏令营挑战赛-D-数据流中的算法-众数
- [51nod1786]数据流中的算法
- 1785 数据流中的算法(模拟,乱搞)
- 51NOD1785 数据流中的算法 【水】
- 1786 数据流中的算法
- 51nod 1277 字符串中的最大值【KMP算法】【next树】
- Touch事件的传递机制
- apache-comnons系列之commons-cli1.4 学习笔记
- 414. Third Maximum Number
- L2-009. 抢红包
- 归并排序
- 51nod 1785 数据流中的算法
- K.O. ----- 配置文件没有提示
- 文章标题
- CSS(5)__CSS基本用法<选择器和一些特效>
- Android多渠道打包
- Master公式计算递归时间复杂度
- C++虚函数详解
- 【HDU 1863】畅通工程(最小生成树-水题)
- Android进程间通信、线程间通信、组件间通信