The best school

这道题有点难度,主要是对题目的理解不全面导致,

看见了输入样例,就想用Struct解决,但完全不会而且大材小用,

其实一个数组的定义就可以解决题中的核心变量 各学校的总分数,

每个参赛选手的学校和分数没有必要存储,

技巧:1.题目中明显的输入输出字样,可以写出对应函数

           2.一直在变化的量有可能为核心解题点

#include<cstdio> 
const int max =100000; 
int school[max]={0};    //1.这两句等价于 int school[100000]={0} 2.把参赛人数的max=学校数,注意量的边界值
int main(){
    int n,sid,score;
    scanf("%d",&n);    //输入参赛人数 
    for(int i=0;i<n;i++){             //所有参赛者输入参赛信息
        scanf("%d %d",&sid,&score);
        school[sid]+=score;           //每所学校总成绩更新  
    }
    int k=-1,MAX=-1 ; // 可能出现参赛队伍为0以及总成绩为0
    for(int i=1;i<=n;i++){   //简单选择思想 (学校代码为1开始连续) (for循环的i具有局部性,故多个for嵌套可用一个i) 
        if (school[i]>MAX){
        MAX=school[i];
        k=i;
        }
    }
    printf("%d %d\n",k,MAX);
    return 0;
}
    

 

posted on 2022-03-02 20:40  Niu的呀  阅读(50)  评论(0)    收藏  举报