資料流統計功能上線後,為51nod提公升使用者體驗做出了很大的貢獻。但是新問題隨之而來,夾克老爺還想知道在乙個視窗內,訪問次數最多使用者(即視窗內的眾數)。如果有多個眾數,取使用者id最小的乙個。(視窗的意思是乙個固定長度的區間!)
input
第一行為整數n, k。(1 <= n <= 5 * 10^6,1 <= k <= 1000)
n代表有多少次操作,k代表視窗大小。
接下來的n行,每行代表一次操作。每行第乙個整數為運算元。
運算元1:使用者訪問
輸入格式: <1, id>
使用者id為0,intmax0,intmax閉區間內的整數。代表擁有此id的使用者對**進行了一次訪問,視窗進行相應移動。
運算元2:詢問眾數
輸入格式:<2>
輸出視窗內的眾數,如果有多個,輸出id最小的那個。
p.s. 對於詢問眾數的操作,視窗保證不空
p.s.s. 對於詢問眾數的操作,視窗可能不滿
output
對於詢問眾數的操作,每行輸出乙個整數。
sample input
10 5sample output1 21 1
1 21 1
1 21 1
21 3
1 32
1對stl的熟練運用,加上卡常,普通的scanf 和printf 都會很慢,手寫乙個輸入輸出流(俗稱 輸入掛,輸出掛)1
**:
#includeusing namespace std;
struct node
};int read()//輸入掛
return ans;
}void out(int a)
putchar(a%10 + '0');
}int main()
);//將輸入的id存入set
if(q.size() == k)));//找到佇列的首位並且刪除
f[q.front()]--;//佇列的首位排出那麼他的數量減一
if(f[q.front()]));//重新存入set
}if(f[q.front()] == 0)
q.pop();
}q.push(b);
}else
}
1785 資料流中的演算法
51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均值。夾克老爺想讓你為統計工具新增乙個新feature,即在統計均值的同時,計算視窗中滿意程度的標準差和中位數 均值需...
資料流中的中位數python 資料流中的中位數
python用的自己實現的最大和最小堆的class,getmedian需要加個引數,否則python版會報錯。coding utf 8 最小堆 class minheap def init self self.minheap def len self return len self.minheap ...
51NOD 資料流中的演算法
演算法 數學 題解 1.平均數 累加字首和。聽說要向下取整?2.中位數 雙堆法,大於中位數存入小頂堆,小於中位數存入大頂堆,保證小頂堆內數字數量 大頂堆,奇數則取小堆頂,偶數則取兩堆頂 2。3.方差 平方的均值 均值的平方 即對於a,b,c,s2 a2 b2 c2 3 a b c 3 2。inclu...