CF24B F1 Champions 题解
Content
有 \(n\) 场已经进行完的赛车比赛,每场比赛给出前 \(m\) 名的名字。在每场比赛中,前 \(10\) 名的选手分别可以获得 \(25,18,15,12,10,8,6,4,2,1\) 分,其他名次的选手不得分。现在给出两种排序方式:
- 先按照得分降序排序,如果得分相同,按照得到第一名的次数降序排序,如果还是相同,就按照得到第二名的次数降序排序,以此类推,直到比较出来为止。
- 先按照得到第一名的次数降序排序,如果次数相同,按照得分降序排序,如果还是相同,就按照得到第二名的次数降序排序,以此类推,直到比较出来为止。
请求出按照两种排序方式排序之后分别得出来的第一名。
数据范围:\(1\leqslant n\leqslant 20,1\leqslant m\leqslant 50\)。
Solution
结构体排序好题。
我们开个结构体,把每个人的名字、得分以及得到的名次的次数情况储存下来:
struct player {
string name;
int score, ranking[57];
}a[1007], b[1007];
然后就是如何通过输入储存了,我们还是利用 \(\texttt{map}\) 将每个人的名字映射到其编号上,每出现一个新的名字,就新开一个空间来存储,并统计这个人的分数和排名情况。
那么为什么要开两组结构体呢?这样好方便排序,所以我们再复制一组相同的结构体,然后按照上面的两个排序方式排序即可,可以写两个 \(\texttt{cmp}\) 函数,然后直接按照上面的方式模拟即可。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <map>
using namespace std;
const int getscore[51] = {0, 25, 18, 15, 12, 10, 8, 6, 4, 2, 1};
map<string, int> vis;
int n, cnt;
string names;
struct player {
string name;
int score, ranking[57];
}a[1007], b[1007];
bool cmp1(const player& p1, const player& p2) {
if(p1.score != p2.score) return p1.score > p2.score;
else
for(int i = 1; i <= 50; ++i)
if(p1.ranking[i] != p2.ranking[i]) return p1.ranking[i] > p2.ranking[i];
}
bool cmp2(const player& p1, const player& p2) {
if(p1.ranking[1] != p2.ranking[1]) return p1.ranking[1] > p2.ranking[1];
else if(p1.score != p2.score) return p1.score > p2.score;
else
for(int i = 2; i <= 50; ++i)
if(p1.ranking[i] != p2.ranking[i]) return p1.ranking[i] > p2.ranking[i];
}
int main() {
scanf("%d", &n);
while(n--) {
int m;
scanf("%d", &m);
for(int i = 1; i <= n; ++i) {
cin >> names;
if(!vis[names]) {
vis[names] = ++cnt;
a[vis[names]].name = names;
}
a[vis[names]].score += getscore[i];
a[vis[names]].ranking[i]++;
}
}
for(int i = 1; i <= cnt; ++i) b[i] = a[i];
sort(a + 1, a + cnt + 1, cmp1);
sort(b + 1, b + cnt + 1, cmp2);
cout << a[1].name << endl << b[1].name;
return 0;
}
CF24B F1 Champions 题解的更多相关文章
- CodeForces 24B F1 Champions(排序)
B. F1 Champions time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- 24B F1 Champions
传送门 题目 Formula One championship consists of series of races called Grand Prix. After every race driv ...
- hdu-4893
http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意: 给定一个数组a,一开始数组里面的元素都是0,现在有三个操作: 操作1:给第k个数字加上d. 操作2 ...
- 靶形数独 (codevs 1174)题解
[问题描述] 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士拿出了他最近发明的“ ...
- “玲珑杯”ACM比赛 Round #12题解&源码
我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧! A ...
- usaco training 4.2.4 Cowcycles 题解
Cowcycles题解 Originally by Don Gillies [International readers should note that some words are puns on ...
- NOIP 2014 提高组 题解
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
- bzoj usaco 金组水题题解(2.5)
bzoj 2197: [Usaco2011 Mar]Tree Decoration 树形dp..f[i]表示处理完以i为根的子树的最小时间. 因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是 ...
- P1962 斐波那契数列-题解(矩阵乘法扩展)
https://www.luogu.org/problemnew/show/P1962(题目传送) n的范围很大,显然用普通O(N)的递推求F(n)铁定超时了.这里介绍一种用矩阵快速幂实现的解法: 首 ...
随机推荐
- java获取CPU核心数
package ThreadTest; public class ThreadTest05 { public static void main(String[] args) { //获取CPU核心 S ...
- 不用Spring Boot的痛苦是什么?用了Spring Boot以后的好处是什么?
1.不用Spring Boot的痛苦是什么? (1)各种技术整合在一起,版本混乱,大量依赖自己去找,依赖冲突 (2)基于xml格式的配置文件,对各种技术框架进行大量的繁琐配置,mvc-servlet. ...
- git连接远程仓库
1. 连接远程仓库 1.1. 创建仓库 在连接远程仓库之前,得先要确定你有一个远程仓库,到GitHub官网搞一个账户. 点右上角的加号然后"New repository"输入一个仓 ...
- 【.NET 与树莓派】MPD 的 Mini-API 封装
在前面的水文中,一方面,老周向各位同学介绍了通过 TCP 连接来访问 MPD 服务:另一方面,也简单演示了 ASP.NET Core 的"极简 API"(Mini API).本篇老 ...
- Codeforces 505E - Mr. Kitayuta vs. Bamboos(二分+堆)
题面传送门 首先很显然的一点是,看到类似于"最大值最小"的字眼就考虑二分答案 \(x\)(这点我倒是想到了) 然鹅之后就不会做了/wq/wq/wq 注意到此题正着处理不太方便,故考 ...
- Java设计模式之(十四)——策略模式
1.什么是策略模式? Define a family of algorithms, encapsulate each one, and make them interchangeable. Strat ...
- msyql_union
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 语法 MySQL UNION 操作符语法格式: SELECT ...
- absent, absolute
absent 1. A teacher asked in a class who killed Abraham Lincoln. A blonde said "It wasn't me, I ...
- A Child's History of England.36
CHAPTER 11 ENGLAND UNDER MATILDA AND STEPHEN The King was no sooner dead than all the plans and sche ...
- STM32代码常见的坑
1 混淆换行符\和除号/造成的坑 入坑代码: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin ...