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 题解的更多相关文章

  1. $CF19A\ World\ Football\ Cup$

    炒鸡\(6\)批的模拟题. 注意的是输入 把握好空格 大小写. 根据题目的这句话来排序 积分榜是按照以下原则制作的:胜利一个队得3分,平分1分,失败0分. 首先,球队按积分顺序排在积分榜上,分数相等比 ...

  2. Hdoj 2289.Cup 题解

    Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...

  3. Codeforces Beta Round #19

    A. World Football Cup #include <bits/stdc++.h> using namespace std;   ; char name[N][N]; map&l ...

  4. Codeforces Round #585 (Div. 2) A. Yellow Cards(数学)

    链接: https://codeforces.com/contest/1215/problem/A 题意: The final match of the Berland Football Cup ha ...

  5. [C++]Yellow Cards - GYM - 102348A(Practice *) - CodeForces

    1 Problem Description Problem The final match of the Berland Football Cup has been held recently. Th ...

  6. A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题

    ---恢复内容开始--- output standard output The final match of the Berland Football Cup has been held recent ...

  7. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) 题解【ABCDE】

    A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后c ...

  8. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) 题解

    真心简单的一场比赛 就是坑比较多(自己太蠢) A是一个水题 3分钟的时候过了 B也是一个比较简单的题 类似的套路见得多了 但是我当时可能比较困 想了一会才想出来 19分钟的时候过掉了 C同样很显然 性 ...

  9. Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】

    Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...

随机推荐

  1. Codeforces 1303G - Sum of Prefix Sums(李超线段树+点分治)

    Codeforces 题面传送门 & 洛谷题面传送门 个人感觉这题称不上毒瘤. 首先看到选一条路径之类的字眼可以轻松想到点分治,也就是我们每次取原树的重心 \(r\) 并将路径分为经过重心和不 ...

  2. 【Python小试】将核酸序列翻译成氨基酸序列

    三联密码表 gencode = { 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M', 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT' ...

  3. 55. Binary Tree Preorder Traversal

    Binary Tree Preorder Traversal My Submissions QuestionEditorial Solution Total Accepted: 119655 Tota ...

  4. mysql order by 多个字段排序实现组内排序

    总结:大组在前,小组在后,计量值再最后,即可实现组内排序:下边是参考别人的具体实例: 工作中需用到order by 后两个字段排序,但结果却产生了一个Bug,以此备录. [1]复现问题场景 为了说明问 ...

  5. CSS上下左右居中对齐

    上下左右居中对齐 display:  inline/inline-block 将父元素(容器)设定 text-align: center: 即可左右置中. display: block 将元素本身的 ...

  6. 5 — springboot中的yml多环境配置

    1.改文件后缀 2.一张截图搞定多环境编写和切换

  7. Windows系统安装MySQL详细教程和安装过程中问题汇总(命令安装),更新时间2021-12-8

    安装包下载 下载地址:https://dev.mysql.com/downloads/mysql/ 点击下载之后,可以选择注册Oracle账号,也可以跳过直接下载. 下载完成后,选择一个磁盘内放置并解 ...

  8. day07 ORM中常用字段和参数

    day07 ORM中常用字段和参数 今日内容 常用字段 关联字段 测试环境准备 查询关键字 查看ORM内部SQL语句 神奇的双下划线查询 多表查询前提准备 常用字段 字段类型 AutoField in ...

  9. Vue相关,Vue JSX

    JSX简介 JSX是一种Javascript的语法扩展,JSX = Javascript + XML,即在Javascript里面写XML,因为JSX的这个特性,所以他即具备了Javascript的灵 ...

  10. zabbix之模板制作(memcache redis)

    #:找一台主机安装redis和memcached(记得安装zabbix-agent) root@ubuntu:~# apt install redis root@ubuntu:~# apt insta ...