解题思路:这题最关键的是要读懂题意,If not all the value are the same but the frequencies of them are the same, there is no mode.这句话是至关重要

      的一句。意思是:如果不是所有的值是相同的,并且他们的出现次数是相同的,那么就没有模型。如,1 1 2 2 3 3 ,它们并不是所有的数都是相同的的,

      并且1出现2次,2出现2次,3出现2次,所以这组数据是没有模型的,同理,1 2 3 4 5 也是没有模型的,输出Bad Mushroom.但是,要注意特殊判断,

      如,1 1 1 1 1,它所有的数是相同的,它是有唯一模型的。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. #define inf 0x3f3f3f3f
  6. const int maxn = ;
  7. int hash2[maxn], num[maxn], vis[maxn];
  8. int w[maxn], s[maxn];
  9. int main()
  10. {
  11. int t, n, kase = ;
  12. scanf("%d", &t);
  13. while(t --)
  14. {
  15. scanf("%d", &n);
  16. memset(hash2, , sizeof(hash2));
  17. for(int i = ; i < n; i++)
  18. {
  19. scanf("%d", &w[i]);
  20. s[i] = - (-w[i])*(-w[i]);
  21. hash2[s[i]]++; //用哈希标记每个对应的grade出现的次数。
  22. }
  23. printf("Case #%d:\n", kase ++);
  24. int ok = ;
  25. for(int i = ; i < n; i++)
  26. {
  27. if(s[i] != s[]) //判断是否所有的grade是否是相同的。
  28. {
  29. ok = ;
  30. break;
  31. }
  32. }
  33. if(ok == ) //如果所有的grade都相同,则直接输出。
  34. {
  35. printf("%d\n", s[]);
  36. continue; //不要掉了。
  37. }
  38. int max1 = -inf;
  39. for(int i = ; i < n; i++)
  40. {
  41. if(hash2[s[i]] >= max1)
  42. {
  43. max1 = hash2[s[i]]; //找出grade出现次数最大的,可以有多个。
  44. }
  45. }
  46. int cnt = ;
  47. int flag = ;
  48. memset(vis, , sizeof(vis));
  49. for(int i = ; i < n; i++)
  50. {
  51. if(hash2[s[i]] < max1) flag = ; //如果有与出现最大次数不相同次数的数,则
  52. //一定是有输出的。
  53. if(hash2[s[i]] == max1 && !vis[s[i]])
  54. {
  55. vis[s[i]] = ;
  56. num[cnt++] = s[i]; //cnt记录出现了多少个频次最大的,num数组则存下对应的值。
  57. }
  58. }
  59. if(!flag) //如果全部出现频次相同,则是没有模型的。
  60. {
  61. printf("Bad Mushroom\n");
  62. continue;
  63. }
  64. if(cnt == ) printf("%d\n", num[]); //一个直接输出。
  65. if(cnt > )
  66. {
  67. sort(num, num+cnt);
  68. for(int i = ; i < cnt-; i ++) printf("%d ", num[i]);
  69. printf("%d\n", num[cnt-]); //注意输出格式即可。
  70. }
  71. }
  72. return ;
  73. }

HDU 5038 Grade的更多相关文章

  1. HDU 5038 Grade(分级)

    Description 题目描述 Ted is a employee of Always Cook Mushroom (ACM). His boss Matt gives him a pack of ...

  2. HDU 5038 Grade北京赛区网赛1005

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5038 解题报告:就是输入n个数w,定义s = 10000 - (100 - w)^2,问s出现频率最高 ...

  3. HDU 5038 Grade (水题,坑题)

    题意:给 n 个数,输出众数,但是如果所有的频率都相同但数不同输出 Bad Mushroom. 析:直接记录个数直接暴力就,就是要注意只有一种频率的时候. 代码如下: #pragma comment( ...

  4. hdu 5038 求出现次数最多的grade

    http://acm.hdu.edu.cn/showproblem.php?pid=5038 模拟水题 求出现次数最多的grade.如果有多个grade出现的次数一样多,且还有其他的grade,则把这 ...

  5. hdu 5038 水题 可是题意坑

    http://acm.hdu.edu.cn/showproblem.php?pid=5038 就是求个众数  这个范围小 所以一个数组存是否存在的状态即可了 可是这句话真恶心  If not all ...

  6. hdu 5038 (2014北京网络赛G 排序水题)

    题意:有n个数字,带入10000 - (100 - ai) ^ 2公式得到n个数,输出n个数中频率最大的数,如果有并列就按值从小到大都输出输出,如果频率相同的数字是全部的n个数,就输出Bad....题 ...

  7. HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)

    HDU 5003 水题,直接上代码(因为题意读错了,WA了一遍). #include <iostream> #include <string.h> #include <s ...

  8. hdu 1084 What Is Your Grade?

    http://acm.hdu.edu.cn/showproblem.php?pid=1084 What Is Your Grade? Time Limit: 2000/1000 MS (Java/Ot ...

  9. hdu 3666 Making the Grade

    题目大意 给出了一列数,要求通过修改某些值,使得最终这列数变成有序的序列,非增或者非减的,求最小的修改量. 分析 首先我们会发现,最终修改后,或者和前一个数字一样,或者和后一个数字一样,这样才能修改量 ...

随机推荐

  1. JavaWeb开发好资料

    以下来源:http://oss.org.cn/ossdocs/ Documents 操作系统: GNU, Linux, Linux核心, Linux Kernel API, Linux核心架构: a1 ...

  2. kafka配置

    官网:http://kafka.apache.org/ 主要有3种安装方式: 1. 单机单broker 2. 单机多broker 3. 多机多broker 1. wget http://mirror. ...

  3. poj 3635(bfs+优先队列)

    题目链接:http://poj.org/problem?id=3635 思路:本题主要运用的还是贪心思想,由于要求st->ed的最小花费,那么每经过一个城市,能不加油就尽量不加油,用dp[i][ ...

  4. node-debug 三法三例之node debugger + node inspector

    大家对nodejs调试应该都比较头疼,至少我这个不用IDE写js的人很头疼这个,其实node的生态圈非常好 有非常好的工具和非常潮的开发方式 这里总结了3法3例,希望能对大家有所帮助 文档地址  ht ...

  5. 深入理解javascript:揭秘命名函数表达式

    这是一篇转自汤姆大叔的文章:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 前言 网上还没用发现有人对命名函数表达式进去重复深 ...

  6. SSH开发实践part1:Spring与Hibernate整合

    1 之前把SSH看完了,现在从头开始进行项目实践.现在讲整个过程中的点滴记录下来,希望对后来者有参考. 2 SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller ...

  7. const以及入栈出栈

    #include "stdafx.h"#include <iostream>using namespace std; class StringStack{ enum{s ...

  8. linux c截断文件

    http://www.cnblogs.com/zhuxiongfeng/archive/2010/08/24/1807505.html

  9. QTableWidget使用简单,因为不再存在父节点的关系

    虽然使用比较简单,但亲自过一遍还是有必要的,权当一个学习笔记吧,记录在此. #include "tablewidgetxxx.h" #include <QtGui/QAppl ...

  10. Android 使用全局变量传递数据

    使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...