P1690 瑞士轮
时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

全国信息学奥林匹克联赛(NOIP2011)复赛普及组第三题
在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。
本题中介绍的瑞士轮赛制,因最早使用于 1895 年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折衷,既保证了比赛的稳定性,又能使赛程不至于过长。

描述

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

输入格式

输入文件名为 swiss.in。
输入的第一行是三个正整数 N、R、Q,每两个数之间用一个空格隔开,表示有2*N 名选手、R 轮比赛,以及我们关心的名次Q。
第二行是 2*N 个非负整数s1, s2, …, s2N,每两个数之间用一个空格隔开,其中si 表示编号为i 的选手的初始分数。
第三行是 2*N 个正整数w1, w2, …, w2N,每两个数之间用一个空格隔开,其中wi 表示编号为i 的选手的实力值。

输出格式

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

测试样例1

输入

2 4 2 
7 6 6 7 
10 5 20 15

输出

1

备注

【输入输出样例说明】
            本轮对阵    本轮结束后的得分
选手编号        /         ① ② ③ ④
初始            /         7  6  6  7
第1 轮    ①—④ ②—③  7  6  7  8
第2 轮    ④—① ③—②  7  6  8  9
第3 轮    ④—③ ①—②  8  6  9  9
第4 轮    ③—④ ①—②  9  6  10  9
【数据范围】
对于 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。
By wjy

解析:

代码:

#include<cstdio>
#include<algorithm>
#define maxn 100000
using namespace std;int n,r,q;
int a[maxn*2+100],win[maxn+100],lose[maxn+100];
int s[maxn*2+100],w[maxn*2+100];bool cmp(int x,int y)
{if(s[x]!=s[y])return s[x]>s[y];return x<y;
}bool MAX(int x,int y)
{if(s[x]!=s[y])return s[x]>s[y];return x<y;
}void merge()
{int i,j,k;i=j=1,a[0]=0;while(i<=win[0] && j<=lose[0])if(MAX(win[i],lose[j]))a[++a[0]]=win[i++];else a[++a[0]]=lose[j++];while(i<=win[0])a[++a[0]]=win[i++];while(j<=lose[0])a[++a[0]]=lose[j++];
}int main()
{int i,j,k;scanf("%d%d%d",&n,&r,&q),n<<=1;for(i=1;i<=n;i++)a[i]=i;for(i=1;i<=n;i++)scanf("%d",&s[i]);for(i=1;i<=n;i++)scanf("%d",&w[i]);sort(a+1,a+n+1,cmp);for(i=1;i<=r;i++){win[0]=lose[0]=0;for(j=1;j<=n;j+=2)if(w[a[j]]>w[a[j+1]]){s[a[j]]++;win[++win[0]]=a[j];lose[++lose[0]]=a[j+1];}else{s[a[j+1]]++;win[++win[0]]=a[j+1];lose[++lose[0]]=a[j];}  merge();       }printf("%d\n",a[q]);    return 0;
}

noip2011 瑞士轮 (归并排序)相关推荐

  1. NOIP2011 瑞士轮 题解

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

  2. P1309 [NOIP2011 普及组] 瑞士轮-快排+归并排序

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

  3. [NOIP2011 普及组] 瑞士轮

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

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

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

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

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

  6. P1309 [NOIP2011 普及组] 瑞士轮

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

  7. NOIP2011普及组 瑞士轮

    看到题解区之后明白了自己居然脑补出伪的归并排序了 (我才知道如何在Markdown中打空行了--) 洛谷-题目链接-瑞士轮 不得不说其实这题很好想或者说是灵光一现.但是在写代码的时候不知道脑子是不是抽 ...

  8. 洛谷排序--瑞士轮(归并排序)

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

  9. 瑞士轮(P1309 )

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

最新文章

  1. python调用webservice接口实例_python发布webservice接口
  2. 计算机学院的运动会介绍,敢于拼搏 超越自我 --计算机学院校运动会动员大会召开...
  3. 你我他科技php面试题,北京科大”携手你我他”, “励”行爱加艾減公益
  4. 鹅厂程序员最喜欢用什么编程语言?Leader写代码么?
  5. Dotnet全平台下APM-Trace探索
  6. STC51-1602、12232、12864液晶
  7. 如何在Eclipse中如何自动添加注释和自定义注释风格
  8. OWOD:开放世界目标检测,更贴近现实的检测场景 | CVPR 2021 Oral
  9. Sci-Hub又又又被起诉了!这个论文免费下载网站也太难了...
  10. python设计查询余额程序_使用Python调取任意数字资产钱包余额功能
  11. LINUX虚拟机安装增强功能时报错: Kernel headers not found for target kernel. Please install them and execute
  12. 如何去除暴风影音2009的广告
  13. i78700和i510400f性能差距大不大
  14. 万物互联时代的数据安全
  15. 陈强老师公开课笔记2——中介效应的原理与检验
  16. 如何科学地评价妹子身材?三围符合黄金比例是审美标准?你错了!
  17. dwf怎么合成一个_油菜素内酯合成基因DWF1、DET2影响毛白杨木质部形成
  18. storm是java还是python_Storm概念学习系列之什么是实时流计算?
  19. 蚂蚁研究员玉伯:做一个简单自由有爱的技术人
  20. e代驾——打造代驾服务标准化平台

热门文章

  1. oracle原销售订单退货,取消销售订单
  2. matlab动态神经网络进行时间序列预测分析
  3. 2019牛客暑期多校训练营(第七场)-B Irreducible Polynomial(多项式因式分解)
  4. OGNL中#、%和$的用法
  5. Git之一次Push的回滚之旅
  6. Xcode The 'Apple Push Notification' feature is only available to users enrolled in Apple Develo...
  7. VMware-workstation-full-10.0.2中英文切换
  8. 为什么 ERP 系统的用户体验不好?
  9. 面试技巧自我介绍大全
  10. JavaScript零基础入门 13:DOM规范中的MutationObserver接口