博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
upc组队赛5 Ingenious Lottery Tickets【排序】
阅读量:6456 次
发布时间:2019-06-23

本文共 2647 字,大约阅读时间需要 8 分钟。

Ingenious Lottery Tickets

题目描述

Your friend Superstitious Stanley is always getting himself into trouble. This time, in his Super Lotto Pick and Choose plan, he wants to get rich quick by choosing the right numbers to win the lottery. In this lottery, entries consist of six distinct integers from 1 to 49, which are written in increasing order. Stanley has compiled a list of winning entries from the last n days, and is going to use it to pick his winning numbers.

In particular, Stanley will choose the six numbers that appeared the most often. When Stanley is breaking ties, he prefers smaller numbers, except that he prefers seven to every other number. What is Stanley’s entry?

输入

The first line of input contains a single integer T (1 ≤ T ≤ 100), the number of test cases. The first line of each test case contains a single integer n (1 ≤ n ≤ 1,000), the number of winning entries that Stanley compiled. The next n lines each contain a lottery entry as described above.

输出

For each test case, output a single line containing Stanley’s entry.

样例输入

231 2 3 4 5 64 5 6 7 8 97 8 9 10 11 1231 2 3 4 5 64 5 6 7 8 91 2 3 7 8 9

样例输出

4 5 6 7 8 91 2 3 4 5 7

提示

In the first test case, the numbers 4 through 9 appear twice each, while all other numbers appear at most

one time.
In the second test case, all numbers 1 through 9 appear twice each. The tiebreaking rule means Stanley
prioritizes picking 7 and then the five smallest numbers.

题意+题解

一共有 M * 6个数字 ,让你输出频率最高的那6个,其中7是幸运数字,如果频率相同的情况下一定会优先选择7

输出的时候要求从小到大输出,所以我们需要做两次排序,先按出现次数从大到小和幸运7规则 排出前6个数,再对这6个数进行从小到大排序

代码

#include
using namespace std;#define pb push_back#define mp make_pair#define rep(i,a,n) for(int i=a;i
P;typedef long long ll;const int INF =0x3f3f3f3f;const int inf =0x3f3f3f3f;const int mod = 1e9+7;const int MAXN = 105;const int maxn = 10010;int T;int n,m;struct node { int cnt; int id; bool operator< (node b) const { if(cnt == b.cnt) { return id == 7 ? 1 : id < b.id; //如果频率相同优先选择7 再数字小的优先 } return cnt > b.cnt; // 出现频率高的排在前面 }}num[10005];int op[10]; //选出6个数int x;int main(){ read(T); while(T--){ int imax = -1; read(m); memset(num,0,sizeof(num)); while(m--){ for(int i = 0; i < 6;i++){ read(x); num[x].id = x; num[x].cnt ++; imax = max(imax,x); } } sort(num,num + imax + 1); //第一次排序,按照出现次数和幸运7规则 int tot = 0; while(tot < 6){ 选择前6个数字 op[tot] = num[tot].id; tot++; } sort(op,op+tot);// 第二次排序,从小到大输出 for(int i = 0; i < 6; i++){ printf("%d%c",op[i],i == 5 ? '\n': ' '); } }}

转载于:https://www.cnblogs.com/llke/p/10800018.html

你可能感兴趣的文章
HDOJ-1010 Tempter of the Bone
查看>>
MySQL my.cnf参数配置优化详解
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
PXE部署实例
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
Android Studio 2.0 preview3 BUG
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
Go语言4
查看>>
jeesite 框架搭建与配置
查看>>
TCP协议中的三次握手和四次挥手(图解)
查看>>
Session 的两种实现机制
查看>>
Mysql免安装版的应用
查看>>
mysql innobackupex增量备份
查看>>
MyBatis缓存
查看>>
Kafka在zookeeper中的存储
查看>>
ah大婚,到底谁占到了便宜?
查看>>
copy_constructor 复制构造函数
查看>>
mysql主从同步原理+配置
查看>>