資料流統計功能上線後,為51nod提公升使用者體驗做出了很大的貢獻。但是新問題隨之而來,夾克老爺還想知道在乙個視窗內,訪問次數最多使用者(即視窗內的眾數)。如果有多個眾數,取使用者id最小的乙個。(視窗的意思是乙個固定長度的區間!)
第一行為整數n, k。(1 <= n <= 5 * 10^6,1 <= k <= 1000)
n代表有多少次操作,k代表視窗大小。
接下來的n行,每行代表一次操作。每行第乙個整數為運算元。
運算元2:詢問眾數
輸入格式:<2>
輸出視窗內的眾數,如果有多個,輸出id最小的那個。
p.s. 對於詢問眾數的操作,視窗保證不空
p.s.s. 對於詢問眾數的操作,視窗可能不滿
output
對於詢問眾數的操作,每行輸出乙個整數。
sample input
10 5
1 21 1
1 21 1
1 21 1
21 3
1 32
sample output11
在這次的題裡,認真的複習了queue,set,map的用法,對演算法的優化有了更深的認識,關鍵的是思路感覺更加比原來完善。
本人蒟蒻,還是需要學習。
**來了,新鮮出爐:
# include # include # include # include using namespace std;
struct node
};int read() //代替scanf,速度更快,俗稱輸入掛
return ans;
}void out(int a) //代替printf,速度更快,俗稱輸出掛
putchar(a%10 + '0');
}int main()
); //把id和出現次數弄成結點放到集合
if(q.size() == k) //如果佇列中的個數等於k,那麼想進去,
));//拿出最開始的節點,就是隊首元素
m[q.front()]--; //既然拿出,那麼個數減一
if(m[q.front()]) //如果個數不為0,就再放到集合裡);}
if(m[q.front()] == 0) //如果出現次數為0就從map中刪去可多過一組哦
q.pop(); //將第乙個扔了
}q.push(tem); //把新進來的放進去
} else
}return 0;
}
51nod1786 資料流中的演算法 眾數
資料流統計功能上線後,為51nod提公升使用者體驗做出了很大的貢獻。但是新問題隨之而來,夾克老爺還想知道在乙個視窗內,訪問次數最多使用者 即視窗內的眾數 如果有多個眾數,取使用者id最小的乙個。視窗的意思是乙個固定長度的區間!乙個map 乙個set include include include i...
51NOD 資料流中的演算法
演算法 數學 題解 1.平均數 累加字首和。聽說要向下取整?2.中位數 雙堆法,大於中位數存入小頂堆,小於中位數存入大頂堆,保證小頂堆內數字數量 大頂堆,奇數則取小堆頂,偶數則取兩堆頂 2。3.方差 平方的均值 均值的平方 即對於a,b,c,s2 a2 b2 c2 3 a b c 3 2。inclu...
51Nod 1785 資料流中的演算法
1785 資料流中的演算法 基準時間限制 1.5 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 51nod近日上線了使用者滿意度檢測工具,使用高階人工智慧演算法,通過使用者訪問時間 滑鼠軌跡等特徵計算使用者對於 的滿意程度。現有的統計工具只能統計某乙個視窗中,使用者的滿意程度的均...