hdu 5038 (2014北京网络赛G 排序水题)
2015-07-19 23:44
513 查看
题意:有n个数字,带入10000 - (100 - ai) ^ 2公式得到n个数,输出n个数中频率最大的数,如果有并列就按值从小到大都输出输出,如果频率相同的数字是全部的n个数,就输出Bad。。。。
题解:统计数字个数和频率,排序后输出。
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
# include <iostream> # include <cstdio> # include <cstring> # include <algorithm> # include <cmath> # define LL long long using namespace std ; struct Num { int cnt ; int num ; }save[10010]; int v[10010] ; bool cmp(Num x , Num y) { return (x.cnt == y.cnt && x.num < y.num ||x.cnt > y.cnt) ; } int main () { //freopen("in.txt","r",stdin) ; int T ; scanf("%d" , &T) ; int Case = 1 ; while(T--) { memset(v, 0, sizeof(v)); int n ; scanf("%d" , &n) ; int a ; int i , j ; int k = 0 ; for (i = 0 ; i < n ; i++) { scanf("%d" , &a) ; int t = 10000 - (100 - a) * (100 - a); if (v[t] == 0) { v[t]++; save[k].cnt = 0 ; save[k].num = t ; k++ ; } else v[t]++; } for (i = 0 ; i < k ; i++) save[i].cnt = v[save[i].num] ; sort(save , save+k , cmp) ; int m = 1 ; for (i = 0; i < k - 1; i++) { if (save[i].cnt == save[i + 1].cnt) m++; else break; } printf("Case #%d:\n" , Case++) ; if (m == k && k!=1) { printf("Bad Mushroom\n") ; continue ; } for (i = 0; i < m-1; i++) printf("%d " , save[i].num) ; printf("%d\n" , save[m-1].num) ; } return 0 ; }View Code
相关文章推荐
- Java中HTTP通信
- HTTP协议(二)之HTTP请求
- HTTP 笔记与总结(8)HTTP 与内容压缩
- linux下的防火墙工具TCP Wrappers|Netfilter简介
- Volley和OkHttp并用时导致http header数据被覆盖的bug
- 网络寻路
- 关于网络开发中JSON的使用
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- HTTP协议(一)
- linux系统网络命令(七)
- HttpClient模拟浏览器登录后发起请求(携带Cookie发请求)以及网页显示的事件过程
- 网络基础知识
- HttpHandler简介
- 深度学习之卷积神经网络
- 如何监控第三方应用程序(SOAP or RESTful client)访问HTTPS当数据站点?
- android网络通信------UDP
- 计蒜之道 初赛 第一场 题解 dp 高效 网络流 最小割 最大流 ISAP 模板
- 网络编程 CAsyncSocket类的应用实例 聊天程序 客户端代码
- android网络通信————Scoket