题意:意思是有若干个飞行员,需要在扫帚上练习飞行,每个飞行员具有不同的等级,且等级高的飞行员可以当等级低的飞行员的老师,且每个飞行员至多有且只有一个老师和学生。具有老师和学生关系的飞行员可以在同一把扫帚上练习,并且这个性质具有传递性。即比如有A,B,C,D,E五个飞行员,且等级是A>B>C>D>E,那么可以使A当B的老师,B当C的老师,E当D的老师,那么A,B,C可以在同一扫帚上练习,D,E在同一把扫帚上练习,这样需要2把扫帚,而如果是A当B的老师,B当C的老师,C当D的老师,D当E的老师,那么只需要一把扫帚。题目所求即所需最少的扫帚数目。


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef
long long ll;
typedef
unsigned long long Ull;
#define MM(a,b) memset(a,b,sizeof(a));
const double eps = 1e-10;
const
int inf =0x7f7f7f7f;
const
double pi=acos(-);
const
int maxn=+;
char
s[];
int
Hash[];
int
BKDRHash(char* s)
{

long long
seed=;
long long
hashv=;
while
(*s=='0')s++;
while
(*s)
{

hashv=hashv*seed+(*s++);
}

return
(hashv & 0x7FFFFFFF);
}
int main()
{

int
n;
while
(~scanf("%d",&n))
{

for
(int i=;i<=n;i++)
{

scanf("%s",s);
Hash[i]=BKDRHash(s);
}

sort(Hash+,Hash+n+);
int
ans=,tmp=;
for
(int i=;i<=n;i++)
{

if
(Hash[i]==Hash[i-]) tmp++;
else
tmp=;
ans=max(ans,tmp);
}

printf("%d\n",ans);
}

return
;
}

  分析:只要求出重复出现次数最多的数字出现的次数就好了

最新文章

  1. Office文档在线预览
  2. Given a code_combination_id how can i get the code description? 获取科目组合描述
  3. JavaScript DOM编程艺术读书笔记(二)
  4. MVC Model数据验证
  5. Karma 5:集成 Karma 和 Angular2
  6. Android之activity初讲
  7. linux下echo命令详解(转)
  8. React和Backbone优缺点
  9. 【转】Android开发中Handler的使用
  10. 使用nw.js将html项目打包为桌面程序
  11. AutoCompleteTextview、MultiAutoCompleteTextView
  12. shufe前辈名师
  13. Python科学计算之Pandas
  14. HTMl课堂随笔
  15. ajax和跨域
  16. TeamView 无法捕捉画面问题的解决办法
  17. ABP框架连接Mysql数据库
  18. 云计算三种服务模式——IaaS、PaaS和SaaS
  19. 18 徐州 M
  20. ng/cli uses yarn as the package manager

热门文章

  1. 比特(bit)和字节(Byte)
  2. nginx(五)- linux下安装nginx与配置
  3. 详解EveryThing
  4. web-CSS居中大全
  5. 用js方式取得接口里面json数据的key和value值
  6. OpenSSL(2)创建私有证书颁发机构
  7. git ignore 如何忽略已经提交的文件修改
  8. 利用selenium 爬取豆瓣 武林外传数据并且完成 数据可视化 情绪分析
  9. 10、LNMP架构
  10. 韦东山嵌入式Linux学习笔记05--存储管理器