HDU 5038 Grade(水~)

来源:互联网 发布:pdg2pdf for mac 编辑:程序博客网 时间:2024/05/16 17:18

Description
用给出的公式s=10000-(100-w)^2(w表示蘑菇的质量)求出每个蘑菇的得分,求出现次数最多的得分,如果有多个分数出现的次数一样多,且还有其他的分数,则把这些出现次数最多的分数按升序输出;否则,输出“Bad Mushroom”
Input
第一行为用例组数T,每组用例第一行为蘑菇数量n,第二行输入n个整数表示这n个蘑菇的质量
Output
对于每组用例,输出出现次数最多的蘑菇的分数,如果有多个分数出现的次数一样多,且还有其他的分数,则把这些出现次数最多的分数按升序输出;否则,输出“Bad Mushroom”
Sample Input
3
6
100 100 100 99 98 101
6
100 100 100 99 99 101
6
100 100 98 99 99 97
Sample Output
Case #1:
10000
Case #2:
Bad Mushroom
Case #3:
9999 10000
Solution
简单排序题,开一个结构数组struct{count,value},count表示分数为value的蘑菇的数量,排完序之后根据不同情况输出即可
Code

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;struct node{    int count;    int value;}s[111111];int vis[111111];int cmp(node a,node b){    if(a.count==b.count)//数量相同按分数升序排         return a.value<b.value;    return a.count>b.count;//数量不同按数量降序排 }int main(){    int t;    scanf("%d",&t);    for(int test=1;test<=t;test++)    {        int n;        scanf("%d",&n);        int k=0;        memset(s,0,sizeof(s));//初始化         memset(vis,0,sizeof(vis));//初始化         for(int i=0;i<n;i++)        {            int d;            scanf("%d",&d);            d=10000-(100-d)*(100-d);            if(!vis[d])//没有出现过这个得分的蘑菇             {                vis[d]++;//该得分出现的次数加一                 //记录这种得分的蘑菇                 s[k].count=0;//初始化数量为0                 s[k++].value=d;            }            else//出现过这个得分的蘑菇则直接将这个得分的出现次数加一即可                 vis[d]++;                       }        for(int i=0;i<k;i++)//记录每种得分出现的次数             s[i].count=vis[s[i].value];        sort(s,s+k,cmp);//排序         printf("Case #%d:\n",test);        int m=1;        for(int i=0;i<k-1;i++)//统计相同得分的蘑菇数量             if(s[i].count==s[i+1].count)                m++;            else                break;        if(m==k&&k!=1)//所有蘑菇的分数相同且蘑菇数量不是一             printf("Bad Mushroom\n");        else        {            //降序输出出现次数相同的分数             printf("%d",s[0].value);            int i=1;            while(s[i].count==s[0].count)                printf(" %d",s[i++].value);            printf("\n");        }    }    return 0;}
0 0
原创粉丝点击