51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間、滑鼠軌跡等特徵計算使用者對於**的滿意程度。
現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數(均值需要向下取整)。
第一行是整數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. 有查詢請求時,視窗可能不滿
對於「查詢均值」、「查詢方差」、「查詢中位數」操作的結果,輸出保留兩位小數。
12 31 11 2
1 3234
1 41 5
1 62
34
2.000.67
2.00
5.00
0.67
5.00
其實難度主要在中位數……感謝隔壁大佬的思路。
因為v為閉區間[0, 100]中的任意整數,所以開個桶存一下就好了,每次查詢中位數時,從0開始向後掃。
1 #include2 #include3 #include4 #include5view codeusing
namespace
std;
6int n,sum,p,num,k,now,cnt,s[105],a[1000050];7
intread()811
while(c>='
0'&&c<='9')
12return x*f;13}
14int
main()
1528
else
if(p==2)printf("
%.2lf\n
",floor((double)sum/now));
29else
if(p==3)30
35else
3648}49
}50else
5163}64
}65}66
}67return0;
68 }
51Nod 1785 資料流中的演算法
1785 資料流中的演算法 基準時間限制 1.5 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均...
51nod 1785 資料流中的演算法
這題看了好多遍,才看懂題目中k的意思,k就是每次計算最多只能到k個人 坑點是平均數那裡,在計算平均數的時候,輸出平均數的時候要向下取整,然後輸出的時候還要保留兩位小數,然而計算方差的時候,那個平均數就不能向下取整了,否則就錯了。include include include const int ma...
51Nod1785 資料流中的演算法
51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...