HDU 5038 Grade
来源:互联网 发布:出国需要下载什么软件 编辑:程序博客网 时间:2024/05/17 01:06
题意:t组测试样例,每组n个蘑菇,给出n个蘑菇的重量,蘑菇的价值是10000-(100-w)^2,输出出现频率最多的价值,如果有多个,按照升序输出,如果价值不相等,并且所有价值出现的频率一样,就输出Bad Mushroom
解体思路:模拟.用map存储价值以及价值出现的次数,先求出出现的最大频率,然后找有没有比这个频率小的,如果没有的话就分为两种情况,一种是价值都相等,那么随便输出一个就行了,如果价值不等但是频率出现的都一样,就输出Bad Mushroom。举个例子:2 2 2 2 2 2输出2,2 2 2 3 3 3输出Bad Mushroom。map是自动按照升序排列的,所以直接输出即可
代码:
#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <cmath>#include <cstdio>#include <map>using namespace std;map<int,int> m;int main(){ int t; scanf("%d",&t); int cnt=0; while(t--) { m.clear(); int n; scanf("%d",&n); int x; for(int i=0; i<n; i++) { int w; scanf("%d",&w); int k=10000-(100-w)*(100-w); x=k; m[k]++; } int maxx=0; map<int,int>::iterator it=m.begin(); for(; it!=m.end(); it++) { maxx=max(it->second,maxx); } int ok=0; map<int,int>::iterator it1=m.begin(); for(; it1!=m.end(); it1++) { if(it1->second<maxx)ok=1; } printf("Case #%d:\n",++cnt); if(m.size()==1) { printf("%d\n",x); } else if(m.size()==n) { printf("Bad Mushroom\n"); } else if(!ok) { printf("Bad Mushroom\n"); } else { map<int,int>::iterator it2=m.begin(); int flag=1; for(; it2!=m.end(); it2++) { if(it2->second==maxx) { if(!flag) { printf(" %d",it2->first); } else { printf("%d",it2->first); flag=0; } } } printf("\n"); } } return 0;}
阅读全文
0 0
- HDU 5038 Grade
- HDU - 5038 Grade
- [ACM] hdu 5038 Grade
- hdu 5038 Grade(水题)
- hdu 5038 Grade
- HDU 5038 Grade
- HDU 5038Grade
- HDU 5038 Grade
- HDU 5038 Grade
- HDU 5038 Grade
- hdu 5038——Grade
- hdu 5038 Grade(水)
- HDU 5038 Grade(数学)
- HDU 5038(Grade-桶排)
- HDU——5038 Grade
- hdu - 5038 - Grade(模拟)
- HDU 5038 Grade(哈希水题)
- HDU 5038 Grade(水~)
- Linux下的变量替换
- JavaScript函数调用中的this
- matlab之生成不重复的随机整数
- android Cannot merge new index 66221 into a non-jumbo instruction(Android studio)bug
- 微波网络
- HDU 5038 Grade
- CCF之出现次数最多的数
- Static的用法
- 对虚拟化技术的理解
- 社交粉丝数据分析----求qq共同好友
- c++ premier学习笔记(unit1
- HDU
- springboot-AOP
- 欢迎使用CSDN-markdown编辑器