【B002】瑞士轮【B级】出自附中OJ———————————————————————————————————————————————————————————————————————————————————————————————————————

【背景】在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。本题中介绍的瑞士轮赛制,因最早使用于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的选手的编号。

【输入示例】

2 4 2
7 6 6 7
10 5 20 15

【输出示例】

1

【其他要求】1≤N≤100,000,1≤R≤50,1≤Q≤2N,0≤s1,s2,…,s2N≤100000000,1≤w1,w2,…,w2N≤100000000。

【题目分析】粗略一看,有点像模拟题,仅需不断qsort,但必会超时,仅需新建一种数据结构+优化的sort即可AC

【代码】

#include<iostream>
#include<cstdio>
#include<algorithm> using namespace std; int n,r,q,i,j,ji; struct node //新的数据结构,方便排名次
{
int s,p,ii;
}
a[200010],w[100010],l[100010]; bool cmp(node a,node b)
{
if (a.s==b.s) return a.ii<b.ii;
return a.s>b.s;
}
int main()
{
cin>>n>>r>>q; n*=2;
for ( i=1;i<=n;++i) scanf("%d",&a[i].s),a[i].ii=i;
for ( j=1;j<=n;++j) scanf("%d",&a[j].p);
sort(a+1,a+1+n,cmp);//sort第一遍的排名
for ( ji=1;ji<=r;ji++)
{
int wi=1,lo=1; //胜利者、失败者标志变量初始化
for ( i=1;i<=n;i+=2)
{
if (a[i].p<a[i+1].p) w[wi++]=a[i+1],l[lo++]=a[i]; //w[x]指的是xx人胜利了x次
else if (a[i].p>a[i+1].p)l[lo++]=a[i+1],w[wi++]=a[i];
}
wi--;
lo--;
for ( i=1;i<=n/2;i++) w[i].s++;
int x=1,y=1;
i=0;
while( x<=n/2 && y<=n/2)
{
if (w[x].s>l[y].s) a[++i]=w[x++];
if (w[x].s<l[y].s) a[++i]=l[y++];
if (w[x].s==l[y].s && w[x].ii>l[y].ii) a[++i]=l[y++];
if (w[x].s==l[y].s && w[x].ii<l[y].ii) a[++i]=w[x++];
}
if (x>n/2)
while (y<=n/2) a[++i]=l[y++];
else while (x<=n/2) a[++i]=w[x++];
}
printf("%d",a[q].ii);
//system("pause");
return 0;
}

【注】:本题已AC

NOIP201103瑞士轮【B002】的更多相关文章

  1. NOIP201103瑞士轮

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

  2. NOIP2011 普及组 T3 洛谷P1309 瑞士轮

    今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...

  3. CODEVS 1132 瑞士轮

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

  4. [NOIP2011]瑞士轮

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

  5. [NOIP2011普及组]瑞士轮 JAVA实现

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

  6. P1309 瑞士轮 排序选择 时间限制 归并排序

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

  7. 洛谷P1309 瑞士轮(归并排序)

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

  8. NOIP2011普及组 瑞士轮

    OJ地址: https://www.luogu.org/problemnew/show/P1309 http://bailian.openjudge.cn/practice/4031/ 总时间限制:  ...

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

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

随机推荐

  1. Qt5_简易画板_详细注释

    代码下载链接:  http://pan.baidu.com/s/1hsc41Ek 密码: 5hdg 显示效果如下: 代码附有详细注释(代码如下) /*** * 先新建QMainWindow, 项目名称 ...

  2. 自定义Log模块

    BuildConfig.DEBUG默认为true,在为app打上SignedKeyStore之后就为false, // Log控制器 MyLoger.openDebutLog(true); MyLog ...

  3. hdu1492(约数个数定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * po ...

  4. 动手动脑及java程序之用消息框进行数的运算

        动手动脑     自信成就人生 动手动脑1 ✿仔细阅读示例: EnumTest.java,运行它,分析运行结果? package demo; public class Test { publi ...

  5. iOS开发-正则表达式的使用方法

    前言:在表单验证中,我们经常会使用到正则,因为我们需要用它来判断用户输入的字符是否为合法的,如果是不合法的,那么应该提示用户输入错误,并不让提交至服务器.我们也可以通过正则表达式,从用户输入的字符串中 ...

  6. 当ListView有Header时,onItemClick里的position不正确

    原文:http://blog.chengbo.net/2012/03/09/onitemclick-return-wrong-position-when-listview-has-headerview ...

  7. 与你相遇好幸运,Sail.js创建.sailsrc文件

    在项目根目录下创建.sailsrc文件 {  "generators": {    "modules": {}  },  "hooks": ...

  8. asmlinkage

    转自:http://www.cnblogs.com/china_blue/archive/2010/01/15/1648523.html 声明,仅为了便于自己记忆和查询,非原创,摘自:http://b ...

  9. PHP获取远程图片并调整图像大小(转)

    <?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw=450 调整 ...

  10. MVC4 使用概述

    1.Bundle使用: http://www.cnblogs.com/inline/p/3897256.html 2.MVC总结: http://www.cnblogs.com/xlhblogs/ar ...