(CCF模拟)F1方程式冠军
【问题描述】
一级方程式F1锦标赛由一系列称为大奖赛的分站赛组成。每一场比赛的车手都根据他们的最后位置获得积分。只有前10名车手按以下顺序获得分数:25、18、15、12、10、8、6、4、2、1。在锦标赛结束时,得分最多的车手是冠军。如果有平分,则冠军是赢的最多的人(即排位第一)。如果还是平分,则选择得到排位第二最多的人,依此类推,直到没有更多的排位进行比较。
后来又提出了另一个得分制度,其中冠军是赢的最多的。如果有平手,冠军是得分最多的。如果仍然存在平手,则按原来的得分制度进行,即比较第二、第三、第四、…排位的次数。
在本赛季,你会得到所有比赛的结果,你将根据两个得分系统来分别确定冠军。数据保证两套系统都能得到唯一的冠军。
【输入形式】
第一行一个整数t(1<=t<=20),t是分站赛的场次数。之后是每个分站赛的最终排位情况,每个的第一行一个整数n(1<=n<=100)表示排位车手人数,之后n行按排位列出车手的名字,排位从第一到最后,车手的名字为长度不超过50的英文字符,大小写区分。
【输出形式】
输出为两行,第一行为按照原始规则确定的冠军,第二行是按照可选规则确定的冠军。
【样例输入】
3
3
apple
banana
pear
2
pear
banana
2
apple
banana
【样例输出】
banana
apple
【样例说明】
【评分标准】
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;struct player//每一个选手的情况
{string name;//名字int score = 0;//得分unsigned short rank[101];//0被舍弃,1-100是排名;只能用unsigned short 因为系统环境int测试不过
};bool cmp1(player a, player b)//第一种比较方式
{if (a.score != b.score)return a.score > b.score;elsefor (int i = 1; i <= 100; i++)if (a.rank[i] != b.rank[i])return a.rank[i] > b.rank[i];
}bool cmp2(player a, player b)//第二种比较方式
{if (a.rank[1] != b.rank[1])return a.rank[1] > b.rank[1];else if (a.score != b.score)return a.score > b.score;elsefor (int i = 2; i <= 100; i++)if (a.rank[i] != b.rank[i])return a.rank[i] > b.rank[i];
}int main()
{int t, index = 0, temp;//t是组数,index在map用于给map标对应的位置string name;player players[100];//定义要放在map前,因为map动态分配,这个是固定的,放在map后会被挤掉unordered_map<string, int> maps;unordered_map<int, int> score{{1, 25},{2, 18},{3, 15},{4, 12},{5, 10},{6, 8},{7, 6},{8, 4},{9, 2},{10, 1}};cin >> t;for (int j = 0; j < t; j++){int n;cin >> n;for (int i = 1; i <= n; i++)//i其实就是排名{cin >> name;if (maps.find(name) == maps.end())//找不到的时候就分配一个新的{players[index].name = name;maps[name] = index++;}temp = maps[name];//进行得分操作players[temp].rank[i]++;//对应的排名增加if (i <= 10){players[temp].score += score[i];//前十名得分增加}}}sort(players, players + index, cmp1);//排序输出cout << players[0].name << endl;sort(players, players + index, cmp2);cout << players[0].name << endl;return 0;
}
(CCF模拟)F1方程式冠军相关推荐
- I'm stuck! ccf模拟题。
ccf模拟题. I'm stuck! 时间限制: 1.0s 内存限制: 256.0MB 问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S' ...
- CCF模拟题-1~5
报名第九次CCF认证,是为了能参加第二届的CCSP,做了一下题库里的C\C++模拟,发现真是够水了-- 前三题,过于简单,不再赘述,发一下题目和对应答案~~~ 出现次数最多的数 #include &l ...
- CCF模拟题——有趣的数详解
马上就要参加CCF认证考试了,然后最近就在做CCF上的模拟题,我选的语言是java,然后遇到第四题--有趣的数,当时一看题目,卧槽太TM简单了,比第一题和第二题还简单,高兴死我了,然后我就做呗,然后我 ...
- CCF 模拟题 有趣的数 (数位DP)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- 出现次数最多的数-CCF模拟
问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n ...
- 碰撞的小球 ccf (模拟)
问题描述 试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐 ...
- CCF 模拟题,公共钥匙盒
题目描述: 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒 ...
- FORMULA ONE RACES AHEAD (F1锦标赛全速前进)
Introduction: Sleek cars race at high speeds as top racecar drivers compete for millions of dollars ...
- FORMULA ONE RACES AHEAD (F1锦标赛全速前进)【空中英语】
Introduction: Sleek cars race at high speeds as top race car drivers compete for millions of dollars ...
- CCF认证考试题解目录
针对历年考题,编写自己的解题程序,在官方网站上提交,了解得分.这个做法可以了解自己的编程水平,找出自己的不足.这样便可以有针对性地改进自己的不足之处,提高考试成绩. 传送门:CCF模拟测试 登录后出现 ...
最新文章
- latex教程详细笔记
- You C.A.N.大赛 解锁7大行业智能硬件创新密码
- log4j配置_是时候了解一下log4j2各种配置的含义了!
- 3808. 画正方形——AcWing题库
- sp_executesq用法
- 更改VS主题及设置背景图片
- 螃蟹保存方法保存时间_活面包蟹怎么保存?面包蟹能保存多久
- linux网卡驱动内核文件目录,LINUX内核升级更新网卡驱动
- python怎么变成黑色_Matplotlib:python2的RGB颜色显示为黑色
- 几万年前,孙悟空大闹地府后删库跑路了!那阎王生死簿又该怎么写呢?
- 无线电定位系统与技术期末个人总结
- 闲山:龙的出现,没有中文字幕怎么办? 自己编程搞一个试试
- Java打印实心菱形和空心菱形
- oracle 错误代码
- ie自带css定位,CSS实现元素相对于浏览器窗口进行定位_css
- 拼多多报活动没有流量怎么办 拼多多活动流量少是什么原因
- nfs服务共享目录的创建
- Stm32_电容式触摸屏- GT9147获取ID
- GreenSock引人注目的动画
- 音乐外链生成源码php,百度网盘音乐外链源码 | 小楼昨夜又东风