PAT (Basic Level) Practise (中文)-1032. 挖掘机技术哪家强(20)

PAT (Basic Level) Practise (中文)-1032. 挖掘机技术哪家强(20) http://www.patest.cn/contests/pat-b-practise/1032

 

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:

输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例:

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例:

2 150


题目信息:
1. 输入的第一行给出一个数值,范围(0,100000],代表参赛人数。
2. 参赛者代表学校,学校使用数字编号,且从1开始连续编号。所以学校编号范围为[1,100000]。所以一个100001个int的hash表即可记录所有参赛学校的分数。
 1 #include<stdio.h>
 2 #include<string.h> 
 3 int main()
 4 { 
 5     int n=0;
 6     scanf("%d",&n);
 7     
 8     int student=0,chengji=0,max=0,maxshool=0,shool[100000]={0};
 9     for(int i=0;i<n;i++)
10     {
11         scanf("%d%d",&student,&chengji);
12         shool[student] += chengji;
13         if(shool[student]>max)
14         {
15               max=shool[student];
16               maxshool=student;      
17         }
18         
19     }
20     printf("%d %d",maxshool,max);
21     return 0;
22 }
23  

思考:为什么可以使用hash?为什么选择使用hash?hash节省了哪些工作?

扩展:如果学校不使用数字编号,而是使用名称(字符串),则如何统计出分数最高者?

提示:如果100000条记录+学校使用名称,则在统计某一个学校的总得分时,如果选择的方法较暴力,则可能超时哦。

提示的提示:可以先按照名称排序,比如quick sort。

 
posted on 2015-04-21 16:35  Asin_LZM  阅读(334)  评论(0编辑  收藏  举报