51nod 1785 数据流中的算法
2017-08-03 22:59
381 查看
这题看了好多遍,才看懂题目中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; }
相关文章推荐
- 51nod 1785 数据流中的算法 | STL的应用
- 51Nod 1785 数据流中的算法
- 51nod 1785 数据流中的算法 (方差计算公式)
- 51nod-1785:数据流中的算法
- 51nod 1785 数据流中的算法
- AC日记——数据流中的算法 51nod 1785
- 51nod 1785 数据流中的算法 【D(x)与E(x)+队列+线段树】
- 51Nod-1785-数据流中的算法
- 51Nod - 1786-数据流中的算法 - 众数
- 51Nod-TalkingData数据科学精英夏令营挑战赛-D-数据流中的算法-众数
- 51Nod 数据流中的算法
- 51Nod数据流中的算法—众数
- 【51nod 数据流中的算法】+ vector
- 1785 数据流中的算法(模拟,乱搞)
- 【51nod 1785】数据流中的算法
- 51nod 1786 数据流中的算法 - 众数
- 1785 数据流中的算法 模拟,精度
- 51Nod 1786 数据流中的算法-众数 题解
- 51Nod - 1786 数据流中的算法 - 众数
- 【51NOD】数据流中的算法