Flying to the Mars(hdu1800,水题排序)

本文深入探讨了信息技术领域的关键概念和技术,包括但不限于前端开发、后端开发、移动开发、游戏开发、大数据开发、开发工具、嵌入式硬件、嵌入式电路知识、嵌入式开发环境、音视频基础、音视频直播流媒体、图像处理AR特效、AI音视频处理、测试、基础运维、DevOps、操作系统、云计算厂商、自然语言处理、区块链、隐私计算、文档协作与知识管理、版本控制、项目管理与协作工具、有监督学习、无监督学习、半监督学习、强化学习、数据安全、数据挖掘、数据结构、算法、非IT技术、自动推理、人工神经网络与计算、自动驾驶、数据分析、数据工程、程序设计方法、数据库理论、代码管理工具。通过本篇文章,读者可以全面了解这些技术领域,为自己的职业发展打下坚实的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28508#problem/C

http://acm.hdu.edu.cn/showproblem.php?pid=1800

Flying to the Mars

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 8401    Accepted Submission(s): 2728

Problem Description

In the year 8888, the Earth is ruled by the PPF Empire . As the population growing , PPF needs to find more land for the newborns . Finally , PPF decides to attack Kscinow who ruling the Mars . Here the problem comes! How can the soldiers reach the Mars ? PPF convokes his soldiers and asks for their suggestions . Rush … ” one soldier answers. Shut up ! Do I have to remind you that there isnt any road to the Mars from here!” PPF replies. Fly !” another answers. PPF smiles :Clever guy ! Although we havent got wings , I can buy some magic broomsticks from HARRY POTTER to help you .” Now , its time to learn to fly on a broomstick ! we assume that one soldier has one level number indicating his degree. The soldier who has a higher level could teach the lower , that is to say the formers level > the latters . But the lower cant teach the higher. One soldier can have only one teacher at most , certainly , having no teacher is also legal. Similarly one soldier can have only one student at most while having no student is also possible. Teacher can teach his student on the same broomstick .Certainly , all the soldier must have practiced on the broomstick before they fly to the Mars! Magic broomstick is expensive !So , can you help PPF to calculate the minimum number of the broomstick needed .

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. 

 

Input

Input file contains multiple test cases. 

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);

 

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

4

 

Sample Output

1

2

 

Author

PPF@JLU

 

Recommend

lcy

 

解析:

题意:

成绩好的人可以帮助成绩差的人,并且他们可以分配到同一个班。但是是一帮一;

问最少需要多少个班。

思路:

把成绩排序,找出成绩相同的最大人数就是答案了。(因为是一帮一,水平相同的不可以互帮,必然要被分配到不同班级)

240 KB 203 ms C++ 597 B 2013

*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include <iostream>
using namespace std;
const int maxn=3000+10;
int a[maxn];
int main()
{
  int n,i,j,ans;
  while(scanf("%d",&n)!=EOF)
  {
  	if(n==0)
  	{
  	 printf("0\n");
  	 continue;
  	}
  	for(i=0;i<n;i++)
  	{
  	 scanf("%d",&a[i]);
  	}
  	sort(a,a+n);
  	ans=1;
  	int t1,t=0;
  	for(i=1;i<n;i++)
  	{   t1=0;
  	 if(a[i]==a[i-1])
  	  {t1++;
  	  while(a[i]==a[i-1]&&i<n)
  	     {t1++;
  	      i++;
  	     }
  	  }
if(ans<t1)
ans=t1;
  	}
  	printf("%d\n",ans);
  }    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值