4031:瑞士轮
总时间限制: 2000ms 单个测试点时间限制: 1000ms 内存限制: 65535kB
描述
【背景】
在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公
平,偶然性较低,但比赛过程往往十分冗长。
本题中介绍的瑞士轮赛制,因最早使用于 1895 年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折衷,既保证了比赛的稳定性,又能使赛程不至于过长。

【问题描述】
2*N名编号为 1~2N的选手共进行 R轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。 选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。 每轮比赛的对阵安排与该轮比赛开始前的排名有关:第 1 名和第 2 名、第 3 名和第 4 名、……、第 2K – 1 名和第 2K名、…… 、第 2N – 1 名和第2N名,各进行一场比赛。每场比赛胜者得 1 分,负者得 0 分。也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。
现给定每个选手的初始分数及其实力值,试计算在 R 轮比赛过后,排名第 Q 的选手编号是多少。我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。

输入
输入的第一行是三个正整数 N、R、Q,每两个数之间用一个空格隔开,表示有 2N 名选手、R 轮比赛,以及我们关心的名次 Q。
第二行是 2
N个非负整数 s1, s2, …, s2N,每两个数之间用一个空格隔开,其中 si 表示编号为 i 的选手的初始分数。
第三行是 2*N个正整数 w1, w2, …, w2N,每两个数之间用一个空格隔开,其中 wi 表示编号为 i 的选手的实力值。
输出
输出只有一行,包含一个整数,即 R 轮比赛结束后,排名第 Q 的选手的编号。
样例输入
2 4 2
7 6 6 7
10 5 20 15
样例输出
1
提示
对于 30%的数据,1 ≤ N ≤ 100;
对于 50%的数据,1 ≤ N ≤ 10,000;
对于 100%的数据, 1 ≤ N ≤ 100,000, 1 ≤ R ≤ 50, 1 ≤ Q ≤ 2N, 0 ≤ s1, s2, …, s2N ≤ 108, 1 ≤ w1, w2, …, w2N ≤ 108

问题链接:Bailian4031 瑞士轮
问题简述:(略)
问题分析:赛制成绩计算问题,不解释。
程序说明:原解题程序来自TYUT同学。
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian4031 瑞士轮 */#include <bits/stdc++.h>using namespace std;const int N = 2 * 1e5 + 2;
int s[N], w[N], num[N], win[N], lose[N];bool cmp(int a, int b)
{return s[a] == s[b] ? a < b : s[a] > s[b];
}void merge()
{int i = 1, j = 1;num[0] = 0;while (i <= win[0] && j <= lose[0]) {if (cmp(win[i], lose[j])) num[++num[0]] = win[i++];else num[++num[0]] = lose[j++];}while (i <= win[0]) num[++num[0]] = win[i++];while (j <= lose[0]) num[++num[0]] = lose[j++];
}int main()
{int n, r, q;cin >> n >> r >> q;n *= 2;for (int i = 1; i <= n; i++) {cin >> s[i];num[i] = i;}for (int i = 1; i <= n; i++) cin >> w[i];sort(num + 1, num + 1 + n, cmp);for (int i = 1; i <= r; i++) {win[0] = lose[0] = 0;for (int j = 1; j <= n; j += 2)if (w[num[j]] > w[num[j + 1]]) {s[num[j]]++;win[++win[0]] = num[j];lose[++lose[0]] = num[j + 1];} else {s[num[j + 1]]++;win[++win[0]] = num[j + 1];lose[++lose[0]] = num[j];}merge();}cout << num[q] << endl;return 0;
}

Bailian4031 瑞士轮【比赛成绩计算】相关推荐

  1. 瑞士轮赛制模拟器_【科普】瑞士轮比赛赛制,本次Major 16进8采用的就是瑞士制...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 不喜欢科普的可以直接从3开始看. 现在大部分的比赛不是采行「淘汰制」就是「循环制」两种.但是对于大型比赛参赛人数众多,且对于赛程要求高的赛事,这两种比赛制 ...

  2. 瑞士轮赛制模拟器_瑞士轮比赛赛制 转自NW

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ○额外回合的结果,若出现决斗的胜败数为1胜1败的场合则根据[判定2]的处理来决斗比赛的胜者 判定2.决斗开始前(卡组调整时间中)限制时间结束的胜败决定: ...

  3. 瑞士轮赛制模拟器_【科普】瑞士轮比赛赛制(简称瑞士制)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 13年恒星区季后一瑞士制推算 注:比赛顺序按照积分顺序 第一轮 1猫 16唯 2奏 15团长 3炮 14saber 4虎 13萌神 5优 12yuri 6 ...

  4. 瑞士轮赛制模拟器_“瑞士轮”是一种怎么样的比赛赛制?

    近日基辅特锦赛主办方PGL放出了比赛赛制,让DOTA2玩家陌生的是基辅特锦赛采用了"瑞士轮",那么什么是"瑞士轮"呢?大多数DOTA2玩家对此种赛制比较陌生,今 ...

  5. 第十五届全国大学生智能车竞赛线下比赛成绩和奖项

    作者:卓晴博士,清华大学自动化系 更新时间:2020-08-30 Sunday 01百度深度学习创意组 1.现场比赛成绩和奖项 学校 队伍 深度学习 如影随形 总时间 获奖等级 华中科技大学 华中科技 ...

  6. 瑞士轮赛制模拟器_比赛赛制科普专栏03 瑞士轮制

    瑞士轮制 随机公平地编排第一轮比赛(一般由抽签决定),接着开始比赛,当某一轮比赛结束后,可以得到所有比赛选手的总积分,根据这个总积分的高低,把比赛选手的由高到低排序,接着是高分比高分,低分比低分,上一 ...

  7. 汇编语言程序设计,计算比赛成绩

    一.设计内容与设计要求 1.课程设计目的: <汇编语言程序设计>是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉.掌握8088宏汇编语言程序设计的基本方法和 ...

  8. 瑞士轮(洛谷-P1309)

    题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...

  9. 洛谷 P1309 瑞士轮

    题目链接:https://www.luogu.org/problemnew/show/P1309 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特 ...

最新文章

  1. 您如何计算字符串中字符串(实际上是字符)的出现?
  2. GitHub 私有仓库完全免费面向团队提供
  3. 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
  4. mysql8如何迁移_mysql8.0.11数据目录迁移的实现
  5. STL(八)——向量vector
  6. java rsa enc 源码_RSA加解密源码 | 学步园
  7. Kotlin-Note
  8. 卸载VS2008后重新安装VS2005的苦难历程
  9. elasticsearch问题解决之分片副本UNASSIGNED
  10. quick cocos2dx 3.3 踩坑日记(三)------ setPOSTData
  11. linux VM中复制虚拟机后eth0变成eth1
  12. html表单php比较三个值大小,php比较多维数组中值的大小排...-array_filter()函数去掉多维数组...-php生成静态html文件的三种方法_169IT.COM...
  13. 将python图表放入ppt_如何在ppt中嵌入python图表(或图像)并刷新
  14. 环比计算分母为0怎么办?
  15. Java递归求费数列和_java – 斐波纳契数列 – 递归求和
  16. centos7批量自动安装
  17. 微信公众平台开发入门教程[2020版]
  18. AndroidStudio 跑马灯效果不自动滚动的原因
  19. Python通过word模板生成新的word文件
  20. neko虚拟机对象文档与扩充

热门文章

  1. Folx Pro 5 Mac的专业下载工具,一款BT下载器
  2. 视频教程-【吴刚】UI拟物图标设计初级入门标准教程-UI
  3. Pandas常用操作命令(四)——数据切片、筛选
  4. 真正中文攻略之ef - the first tale
  5. java中文姓名排序pinyin4j-2.5.0,pinyin4j工具类--Java 中文字符操作:排序、拼音
  6. python在画布上显示动态图片_python Tkinter在画布上显示图像,它总是blin
  7. 【高通6模全网通智能模块】MSM8909 ,可支持二次开发
  8. VMware安装CentOS7超详细版
  9. Python PyScript教程之将 Python 带入浏览器进行图像处理
  10. PyScript 来了!