1785 資料流中的演算法
基準時間限制:1.5 秒 空間限制:131072 kb 分值: 20
難度:3級演算法題
51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間、滑鼠軌跡等特徵計算使用者對於**的滿意程度。
現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數。
input
第一行是整數n與k,代表有n次操作,時間視窗大小為k。output(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. 有查詢請求時,視窗可能不滿
對於「查詢均值」、「查詢方差」、「查詢中位數」操作的結果,輸出保留兩位小數。input示例
12 3output示例1 11 2
1 3234
1 41 5
1 62
34
2.000.67
2.00
5.00
0.67
5.00
剛開始理解錯題意了。。。然後就一直runtime error...這裡時間視窗是有大小的,即是,只能統計時間視窗內的資料,資料視窗的資料不斷更新。
#include#include#include#includeusing namespace std;
int a[1000010];
int b[1000010];
int main()
a[now++]=t;
if(now>k)
}else if(m==2)
else if(m==3)
printf("%.2lf\n",sum1/all);
}else if(m==4)
}sort(b+1,b+c+1);
printf("%.2lf\n",(b[(c+1)/2]+b[c/2+1])*1.0/2.0);
}} }
return 0;
}
51nod 1785 資料流中的演算法
這題看了好多遍,才看懂題目中k的意思,k就是每次計算最多只能到k個人 坑點是平均數那裡,在計算平均數的時候,輸出平均數的時候要向下取整,然後輸出的時候還要保留兩位小數,然而計算方差的時候,那個平均數就不能向下取整了,否則就錯了。include include include const int ma...
51nod 1785 資料流中的演算法
51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...
51Nod1785 資料流中的演算法
51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...