CF19A World Football Cup 题解
Content
有 \(n\) 个球队参加一场足球比赛,比赛排名前 \(\dfrac{n}{2}\) 的队伍将会进入下一轮的淘汰赛。比赛将会打 \(\dfrac{n(n-1)}{2}\) 场,胜者得 \(3\) 分,负者得 \(0\) 分,平局双方各得 \(1\) 分。排行榜上首先会按球队的积分从大到小排序,如果积分相同将会比较净胜球数(胜场比另一方领先的球数的总和减去负场比另一方落后的球数的总和的值),如果净胜球数相同会比较进球数,如果进球数还相同则会比较字典序。试求出能够晋级淘汰赛的 \(\dfrac{n}{2}\) 个队伍。
数据范围:\(1\leqslant n\leqslant 50\),球队名不超过 \(30\) 个字符,单场双方的进球数都不会超过 \(100\)。另根据 CF 官网给出的数据可得,\(n\) 保证是偶数。
Solution
看啥做啥的模拟题。
我们可以通过 \(\texttt{map}\) 直接映射得到球队名所属的球队的积分、胜场比另一方领先的球数的总和、负场比另一方落后的球数的总和、进球数。然后按照如上的关键字次序排序,便可以得到前 \(\dfrac{n}{2}\) 名的球队。
Code
int n;
string s[57], win[57];
map<string, int> q, goal, wingoal, losegoal;
struct team {
string name;
int score, wingoals, goals;
bool operator < (const team& dxy) const {
if(score != dxy.score) return score > dxy.score;
else if(wingoals != dxy.wingoals) return wingoals > dxy.wingoals;
else if(goals != dxy.goals) return goals > dxy.goals;
return name < dxy.name;
}
}teams[57];
int main() {
getint(n);
_for(i, 1, n) cin >> s[i];
_for(i, 1, n * (n - 1) / 2) {
string a, team1 = "", team2 = ""; int x, y;
cin >> a; scanf("%d:%d", &x, &y);
int len = a.size(), flag = 1;
_for(j, 0, len - 1) {
if(a[j] == '-') flag++;
else if(flag == 1) team1 += a[j];
else if(flag == 2) team2 += a[j];
}
goal[team1] += x, goal[team2] += y;
if(x > y) q[team1] += 3, wingoal[team1] += (x - y), losegoal[team2] += (x - y);
else if(x == y) q[team1] += 1, q[team2] += 1;
else q[team2] += 3, wingoal[team2] += (y - x), losegoal[team1] += (y - x);
}
_for(i, 1, n)
teams[i] = (team){s[i], q[s[i]], wingoal[s[i]] - losegoal[s[i]], goal[s[i]]};
sort(teams + 1, teams + n + 1);
_for(i, 1, n / 2) win[i] = teams[i].name;
sort(win + 1, win + n / 2 + 1);
_for(i, 1, n / 2) cout << win[i] << endl;
return 0;
}
CF19A World Football Cup 题解的更多相关文章
- $CF19A\ World\ Football\ Cup$
炒鸡\(6\)批的模拟题. 注意的是输入 把握好空格 大小写. 根据题目的这句话来排序 积分榜是按照以下原则制作的:胜利一个队得3分,平分1分,失败0分. 首先,球队按积分顺序排在积分榜上,分数相等比 ...
- Hdoj 2289.Cup 题解
Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...
- Codeforces Beta Round #19
A. World Football Cup #include <bits/stdc++.h> using namespace std; ; char name[N][N]; map&l ...
- Codeforces Round #585 (Div. 2) A. Yellow Cards(数学)
链接: https://codeforces.com/contest/1215/problem/A 题意: The final match of the Berland Football Cup ha ...
- [C++]Yellow Cards - GYM - 102348A(Practice *) - CodeForces
1 Problem Description Problem The final match of the Berland Football Cup has been held recently. Th ...
- A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题
---恢复内容开始--- output standard output The final match of the Berland Football Cup has been held recent ...
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) 题解【ABCDE】
A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后c ...
- Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) 题解
真心简单的一场比赛 就是坑比较多(自己太蠢) A是一个水题 3分钟的时候过了 B也是一个比较简单的题 类似的套路见得多了 但是我当时可能比较困 想了一会才想出来 19分钟的时候过掉了 C同样很显然 性 ...
- Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...
随机推荐
- synchronized的一些理解
1. 两个普通的synchronized package ThreadTest; import java.util.concurrent.TimeUnit; public class ThreadTe ...
- 7.2 k8s 基于PV、PVC搭建zookeeper 3节点集群
1.PV,PVC介绍 1.1.StorageClass & PV & PVC关系图 Volumes 是最基础的存储抽象,其支持多种类型,包括本地存储.NFS.FC以及众多的云存储,我们 ...
- 监听浏览器tab切换
监听浏览器切屏 为了完成验证用户在切换浏览器tab时进行登录再次认证需求需要监听浏览器切换窗口 if (document.hidden !== undefined) { document.addEve ...
- 解决Package is not available (for R version XXX)?
目录 1. 更新R(不推荐) 2. 更改或指定镜像源 3.源码安装 安装R包时这个错误是经常见到的.我认为有几个方法可解决,记录之. 1. 更新R(不推荐) 简单粗暴的方法就是更新R,但这波及的范围太 ...
- BSA分析
目录 两种算法 1. 欧氏距离(ED)算法 2. SNP-index算法 实操 1. 上游分析 2. 下游分析 两种算法 1. 欧氏距离(ED)算法 mut与wt分别代表突变型混池.野生型混池,A.C ...
- Mysql-单个left join 计算逻辑(一对多问题)
BUG背景: 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定.但是由于物流表在保存订单信息的时候没有做判断该订单是否已经有物流信息,这就变成同一个订单id在物流表中存在多 ...
- LeetCode一维数组的动态和
一维数组的动态和 题目描述 给你一个数组 nums.数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]...nums[i]). 请返回 nums 的动态和. 示例 1: ...
- 数据库时间和 java 时间不一致解决方案
java添加 date 到数据库,时间不一致 使用 date 添加到数据库,数据库显示的时候和date时间相差 8 个小时,这是由于 mysql 上的时区的问题,这里有两个解决方案: 方案一: 设置数 ...
- nodejs-CommonJS规范
JavaScript 标准参考教程(alpha) 草稿二:Node.js CommonJS规范 GitHub TOP CommonJS规范 来自<JavaScript 标准参考教程(alpha) ...
- ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in..的错误 [转]
问题: ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in..的错误 解决方法: 把没被singed的变量临时变更signed去处 ...