学习魔法扫帚吧 ! 假定每个士兵都有一个表示他们等级的数字. 更高等级的士兵能够教授低等级的士兵. 每名士兵最多有一位老师(也可以没有). 同样的,每名士兵最多有一个学生 (也可以没有). 老师可以用同一把魔法扫帚教学 . 当然 , 每名士兵都必须在魔法扫帚上实践过 ! 你需要求出魔法扫把需要的最少数量 .(即求出具有某一相同等级士兵的最大数目)
For example :
There are 5 soldiers (A B C D E)with level numbers : 2 4 5 6 4;
One method :
C could teach B; B could teach A; So , A B C are eligible to study on the same broomstick.
D could teach E;So D E are eligible to study on the same broomstick;
Using this method , we need 2 broomsticks.
Another method:
D could teach A; So A D are eligible to study on the same broomstick.
C could teach B; So B C are eligible to study on the same broomstick.
E with no teacher or student are eligible to study on one broomstick.
Using the method ,we need 3 broomsticks.
……
After checking up all possible method, we found that 2 is the minimum number of broomsticks needed.
In a test case,the first line contains a single positive number N indicating the number of soldiers.(0<=N<=3000)
Next N lines :There is only one nonnegative integer on each line , indicating the level number for each soldier.( less than 30 digits)(纯粹吓唬人,估计10位都不到吧);
Output For each case, output the minimum number of broomsticks on a single line. Sample Input
4 10 20 30 04 5 2 3 4 3 4Sample Output
1 2
#include<cstdio>
#include<map>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int num,Max=0;
map<int,int> mp;
while(n--)
{
scanf("%d",&num);
mp[num]++;
if(mp[num]>Max)
Max=mp[num];
}
printf("%d\n",Max);
}
return 0;
}