給定乙個長度為n數列a = [a1,
a2,.
..an
a_1, a_2, ... a_n
a1,a2
,..
.an
],由於某種原因,小ho對這個數列有些不滿意。
他希望每個在數列**現的數值,其出現的次數都是唯一的。
假設a = [1, 1, 2, 2],1和2都出現了2次,小ho就會不滿意。
於是小ho決定從a中刪除一些數,使得每個數值出現次數都是唯一的。
小ho想知道他最少要刪除幾個數?
例如對於a = [1, 1, 2, 2],最少刪除乙個數變成[1, 2, 2]或[1, 1, 2]。
第一行包含乙個整數n。
第二行包含n個整數 $a_1, a_2, … a_n $ 。
1 <= n <= 100000 1 <= a
ia_i
ai <= 1000000
乙個整數代表答案
41 2 2 1
使用雜湊表處理問題,當有多個數的出現次數的數值相同時,刪除其中乙個數字並判斷該處的雜湊值是否為空,如為空,則儲存並記錄與修改雜湊值,否則繼續刪除直到全部刪除為止
#includeusing namespace std;
#define n 1000010
mapm;
int t,a;
int table[n];
int main()
for(map::iterator it=m.begin();it!=m.end();it++)
int ans=0;
for(map::iterator it=m.begin();it!=m.end();it++)
table[st]=1;
}} }
cout
}
等差子數列 HihoCoder 1710
給定n個整數a1,a2,an,小hi會詢問你m個問題。對於每個問題小hi給出兩個整數l和r l r 請你找出 al,al 1,al 2,ar 中最長的等差連續子數列,並輸出其長度。例如 2,3,5,7,9 中最長的等差連續子數列是 3,5,7,9 長度為4。input 第一行包含兩個整數n和m。第二...
hihoCoder 骨牌覆蓋問題 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...
hihoCoder 骨牌覆蓋問題 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...