HDOJ 5038 Grade

来源:互联网 发布:excel两列数据找相同 编辑:程序博客网 时间:2024/06/05 10:12

题意:根据题给公式计算s,输出s数量最多的数。如果个数相同,按升序输出。当每个s的数量都相等时输出BadMushroom。

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5038

思路:每个输入的数据转化为s,并计数,排序得到数量最多 的S的值,并输出。

注意点:当s仅为一种值的时候输出s。

以下为AC代码:

Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor116954492014-09-21 19:04:55Accepted5038890MS344K1970BG++luminous11

#include <iostream>#include <algorithm>#include <cstdio>#include <vector>#include <set>#include <cmath>#include <cstring>#include <iomanip>using namespace std;struct node {    int n;    int cnt;}num[205];set<int> p;int calc ( int i ){    p.insert ( 10000 - (  i ) * ( i ) );}void init ( const int &n ){    int k;    for ( int i = 0; i < 205; i ++ )    {        num[i].n = i;        num[i].cnt = 0;    }    for ( int i = 0; i < n; i ++ )    {        cin >> k;        if ( k <= 100 )        {            num[100 - k].cnt ++;        }        else        {            num[k - 100].cnt ++;        }    }}bool cmp ( const node &a, const node & b ){    return a.cnt > b.cnt ? 1 : 0;}int main(){    ios::sync_with_stdio( false );    int ncase;    cin >> ncase;    //int num[105];    //while ( t -- )    for ( int t = 1; t <= ncase; t ++ )    {        cout << "Case #" << t << ":" << endl;        p.clear();        int flag = 0;        int n;        int k;        cin >> n;        memset ( num, 0, sizeof ( num ) );        init ( n );        sort ( num, num + 100, cmp );        int tmp = num[0].cnt;        if ( num[1].cnt == 0 )        {            flag = 1;        }        for ( int i = 0; i < 205; i ++ )        {             if ( num[i].cnt == tmp )             {                 calc( num[i].n );             }             if ( num[i].cnt != tmp && num[i].cnt != 0 )             {                 flag = 1;             }        }        set<int>::iterator it = p.begin();        if ( ! flag )        {            cout << "Bad Mushroom" << endl;        }        else        {            cout << *it;            it ++;            for ( ; it != p.end(); it ++ )            {                cout << ' ' << *it;            }            cout << endl;        }    }    return 0;}


0 0
原创粉丝点击