51Nod 1785 資料流中的演算法

2021-07-29 16:58:11 字數 1469 閱讀 9846

1785 資料流中的演算法

基準時間限制:1.5 秒 空間限制:131072 kb 分值: 20 

難度:3級演算法題

51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間、滑鼠軌跡等特徵計算使用者對於**的滿意程度。

現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數。

input

第一行是整數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. 有查詢請求時,視窗可能不滿

output

對於「查詢均值」、「查詢方差」、「查詢中位數」操作的結果,輸出保留兩位小數。
input示例

12 3

1 11 2

1 3234

1 41 5

1 62

34

output示例

2.00

0.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,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...