51nod 1785 資料流中的演算法

2022-04-30 13:03:12 字數 1460 閱讀 4880

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 3

1 11 2

1 3234

1 41 5

1 62

34

2.00

0.67

2.00

5.00

0.67

5.00

其實難度主要在中位數……感謝隔壁大佬的思路。

因為v為閉區間[0, 100]中的任意整數,所以開個桶存一下就好了,每次查詢中位數時,從0開始向後掃。

1 #include2 #include3 #include4 #include5

using

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 }

view code

51Nod 1785 資料流中的演算法

1785 資料流中的演算法 基準時間限制 1.5 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均...

51nod 1785 資料流中的演算法

這題看了好多遍,才看懂題目中k的意思,k就是每次計算最多只能到k個人 坑點是平均數那裡,在計算平均數的時候,輸出平均數的時候要向下取整,然後輸出的時候還要保留兩位小數,然而計算方差的時候,那個平均數就不能向下取整了,否則就錯了。include include include const int ma...

51Nod1785 資料流中的演算法

51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...