题目背景

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

本题中介绍的瑞士轮赛制,因最早使用于1895年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折中,既保证了比赛的稳定性,又能使赛程不至于过长。

题目描述

2*N 名编号为 1~2N 的选手共进行R 轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。

每轮比赛的对阵安排与该轮比赛开始前的排名有关:第1 名和第2 名、第 3 名和第 4名、……、第2K – 1 名和第 2K名、…… 、第2N – 1 名和第2N名,各进行一场比赛。每场比赛胜者得1 分,负者得 0 分。也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。

现给定每个选手的初始分数及其实力值,试计算在R 轮比赛过后,排名第 Q 的选手编号是多少。我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。

输入输出格式

输入格式:

输入的第一行是三个正整数N、R 、Q,每两个数之间用一个空格隔开,表示有 2*N 名选手、R 轮比赛,以及我们关心的名次 Q。

第二行是2*N 个非负整数s1, s2, …, s2N,每两个数之间用一个空格隔开,其中 si 表示编号为i 的选手的初始分数。 第三行是2*N 个正整数w1 , w2 , …, w2N,每两个数之间用一个空格隔开,其中 wi 表示编号为i 的选手的实力值。

输出格式:

输出只有一行,包含一个整数,即R 轮比赛结束后,排名第 Q 的选手的编号。

输入输出样例

输入样例#1:

2 4 2 
7 6 6 7 
10 5 20 15

输出样例#1:

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≤10^8,1 ≤w1, w2 , …, w2N≤ 10^8。

思路:

暴力+归并

每一次两两比较,赢的放在一个数组,输的放在另一个数组,因为之前已经有序,可以保证两数组前面的排名在后面之前,所以只要比较从两数组开头开始比就可以。

源代码

#include<iostream>
#include <algorithm>
using namespace std;
int N,R,Q;
int initial[200000]={0},strength[200000]={0},order[2000000]={0};
int a[100000],b[100000];bool cmp(int x,int y)
{if(initial[x]!=initial[y]) return initial[x]>initial[y];return x<y;
}void merge_sort(int order[])
{int i,j,k;for(i=0,j=0,k=0;i<N&&j<N;k++)//合并a,b{if(cmp(a[i],b[j])){order[k]=a[i];i++;}else{order[k]=b[j];j++;}}for(;i<N;i++,k++) order[k]=a[i];//复制左边子序列剩余for(;j<N;j++,k++)  order[k]=b[j];//复制右边子序列剩余}int main()
{int i;cin>>N>>R>>Q;for(i=1;i<=2*N;i++)    cin>>initial[i];for(i=1;i<=2*N;i++)    cin>>strength[i];for(i=0;i<2*N;i++) order[i]=i+1;sort(order,order+2*N,cmp);//以成员序号order为i,对基础成绩进行降序排序for(;R>0;R--)//共进行进行R轮比赛{for(i=0;i<N;i++)//每轮进行N次{if( strength[order[2*i]] > strength[order[2*i+1]] ){initial[order[2*i]]++;a[i]=order[2*i];b[i]=order[2*i+1];}else{initial[order[2*i+1]]++;a[i]=order[2*i+1];b[i]=order[2*i];}}merge_sort(order);//合并结果到order}cout<<order[Q-1]<<endl;return 0;
}

瑞士轮(洛谷-P1309)相关推荐

  1. 信息学奥赛一本通 1955:【11NOIP普及组】瑞士轮 | OpenJudge NOI 4.1 4363:瑞士轮 | 洛谷 P1309 [NOIP2011 普及组] 瑞士轮

    [题目链接] ybt 1955:[11NOIP普及组]瑞士轮 OpenJudge NOI 4.1 4363:瑞士轮 洛谷 P1309 [NOIP2011 普及组] 瑞士轮 [题目考点] 1. 归并排序 ...

  2. 洛谷 P1309 瑞士轮 归并

    洛谷 P1309 瑞士轮 https://www.luogu.com.cn/problem/P1309 每一轮快排,超时: # include<iostream> # include< ...

  3. 洛谷 P1309 瑞士轮

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

  4. 洛谷 P1309 瑞士轮 解题报告

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

  5. 洛谷P1309 瑞士轮【归并排序】

    题目链接:P1309 瑞士轮 程序说明: 卡了一个晚上,思路比较简单但是细节很多,有很多大坑! 每轮比赛结束后都需要对选手的成绩进行排序,这道题不能用STL的sort()或者手写快排进行排序,否则会超 ...

  6. Noip—p1309 瑞士轮

    题目描述:洛谷p1309瑞士轮题目描述放在链接里,忘记题目描述的同学可以回去复习一下嗷. 思路 看了好多题解,都是硬往归并排序上靠,但是为什么是归并排序呢,看了好多篇文章都没有看懂,直到我手动的去模拟 ...

  7. 【n次归并操作】瑞士轮

    洛谷p1309 考虑到在一轮比赛后,胜者组的n人(均加一分)和败者组的n人(均不得分)的相对次序没有发生变化,故比赛每进行一轮,相当于对胜者组和败者组进行一次归并操作.其中,胜者组字在归并前需要先加上 ...

  8. (洛谷)1309 瑞士轮+(代码)

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

  9. 洛谷1309 瑞士轮

    洛谷1309 瑞士轮 本题地址: http://www.luogu.org/problem/show?pid=1309 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘 ...

最新文章

  1. Linux动态频率调节系统CPUFreq
  2. 23.IntelliJ IDEA 常用设置-1
  3. jquery中的html代码、文本以及值
  4. php 检测移动设备,Github项目Mobile-Detect-检测移动设备的php类
  5. 服务器进不去系统system,system是什么进程 system进程可以关闭吗
  6. 删除服务器tomcat上项目,删除tomcat服务器
  7. 最新Discuz手机模板NVBING5手机版源码+可封装APP
  8. 【无人机】基于Matlab实现高效局部地图搜索算法附论文
  9. DNS 114.114.114.114与8.8.8.8
  10. 基于鲁棒-距离平衡和基于学习的人工蜂群的强大优化算法(Matlab代码实现)
  11. 什么是类。什么是对象
  12. tensorflow 做多元线性回归时怎样对非数据型数据(分类型数据)进行处理(编码)
  13. h6与php啥关系,哈佛m6跟哈佛h6的不同之处是什么发动机和底盘一样吗
  14. 双通道内存和单通道的区别是什么
  15. 提交恶意代码,这所大学被“封杀”
  16. 解决response乱码问题
  17. biee java_CAS做单点登陆(SSO)——集成BIEE 11g
  18. 如何修改桌面新建菜单项
  19. python 菜鸟联盟快递查询_快递单号查询接口-极兔速递
  20. Jenkins Role-based Authorization Strategy基于角色的访问权限控制

热门文章

  1. 凭什么老程序员被裁,应届生却能月薪 1.3 万?
  2. 为什么 Linux 默认页大小是 4KB
  3. 原创 | 2020年Java程序员应该学习的10大技术
  4. 火热报名|5月15日线下沙龙上海站——“大促活动场景下的质量保障”主题
  5. Springboot2集成minidao持久层
  6. JEECG 3.7新版在线文档WIKI正式发布
  7. jeecg集成实现websocket
  8. 作为一个新晋测试经理,在软件测试计划之前你必须知道的10件事
  9. 《三国志》生僻人名读法集(zz)
  10. ZZULIOJ 1103: 平均学分绩点(函数专题)