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. 多线程合集(二)---异步的那些事,async和await原理抛析

    引言 在c#中,异步的async和await原理,以及运行机制,可以说是老生常谈,经常在各个群里看到有在讨论这个的,而且网上看到的也只是对异步状态机的一些讲解,甚至很多人说异步状态机的时候,他们说的是 ...

  2. 详解Python Streamlit框架,用于构建精美数据可视化web app,练习做个垃圾分类app

    今天详解一个 Python 库 Streamlit,它可以为机器学习和数据分析构建 web app.它的优势是入门容易.纯 Python 编码.开发效率高.UI精美. 上图是用 Streamlit 构 ...

  3. GraalVM最佳实践,使用Java开发CLI、Desktop(JavaFX)、Web(SpringBoot)项目,并使用native-image技术把Java代码静态编译为独立可执行文件(本机映像)

    原创文章,转载请注明出处! 源码地址: Gitee Gtihub 介绍 GraalVM最佳实践,使用Java开发CLI.Desktop(JavaFX).Web(SpringBoot)项目,并使用nat ...

  4. CF1601E Phys Ed Online

    考虑一个贪心. 我们一定采取的方案是 \(b_i = \min_{j = i - k}^i a_j\) \(\sum a_l + b_{l + k} + \min_{i = 1}^2{b_{l + i ...

  5. HAOI 2018 Round 1 题解

    无聊了开一套省选题刷刷--u1s1 感觉三个题都不错,难度也挺有梯度,是一道标准的省选难度的题(话说 CSP 前你刷省选题干嘛/ts/ts) 小 C 珂海星 T1:P4495 [HAOI2018]奇怪 ...

  6. 为什么Mysql用B+树做索引而不用B-树或红黑树

    B+树做索引而不用B-树 那么Mysql如何衡量查询效率呢?– 磁盘IO次数. 一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上. ...

  7. SQL-关联表查询(连表查询)

    0.例如:select * from T1,T2     where T1.a=T2.a 1.连表查询 <=> join(inner join)内连接查询 数据源: Persion表:  ...

  8. C++类成员初始化列表的构造顺序

    看下面代码, 输出结果是多少呢? class A{ public: A(int k) : j(k), i(j) { } void show() { cout << this->i & ...

  9. git 的基本流程

    有个本地文件 打开 新建一个 打开git $ git push origin master 这里是上传文件.  (你每次上传的时候,都要先提交到本地的仓库...然后再上传) github上就有了 如何 ...

  10. c++string转const char*与char*

    #include <iostream> #include <string> #include <memory> using namespace std; const ...