【题外话:这道题吧……说实话我不太喜欢……因为卡快排。】

题目不贴了,就是给你一个赛制,然后各个选手的初始得分和能力值,问你进行R轮比赛之后第Q名的编号是多少(这个编号读进来就要算OYZ,初始快排的时候也要注意。)

我是用的比较常规的方法,每次扫描整个序列,计算胜者和负者,分入两个数组,然后把这两个数组归并回原来的序列里(因为这两个序列都已经有序,所以可以免去排序直接合并),题目中要求编号小的排在前面,因为归并是稳定排序所以不需要担心这些。

其实本质来说就是个讲究技巧的模拟吧?

下贴代码,风格照样丑。

 #include <algorithm>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
ifstream fin("swiss.in");
ofstream fout("swiss.out");
struct per
{
int fs;
int nl;
int bh;
};
per player[];
int Rs=,ls=,gz=;
per winner[]={},loser[]={};
void Heib();
bool px(per a,per b);
int main(void)
{
fin>>Rs>>ls>>gz;
Rs*=;
for(int i=;i<=Rs;i++)
{
fin>>player[i].fs;
player[i].bh=i;
}
for(int i=;i<=Rs;i++)fin>>player[i].nl;
sort(player+,player+Rs+,px);
for(int i=;i<=ls;i++)
{
for(int j=;j<=Rs;j++)
{
if(j%==)
{
if(player[j].bh==||player[j-].bh==)
{
}
if(player[j].nl>player[j-].nl)
{
winner[j/].bh=player[j].bh;
winner[j/].fs=player[j].fs+;
winner[j/].nl=player[j].nl;
loser[j/].bh=player[j-].bh;
loser[j/].fs=player[j-].fs;
loser[j/].nl=player[j-].nl;
}
else
{
winner[j/].bh=player[j-].bh;
winner[j/].fs=player[j-].fs+;
winner[j/].nl=player[j-].nl;
loser[j/].bh=player[j].bh;
loser[j/].fs=player[j].fs;
loser[j/].nl=player[j].nl;
}
}
}
Heib();
}
fout<<player[gz].bh;
return ;
} bool px(per a,per b)
{
if(a.fs>b.fs)return ;
if(a.fs==b.fs&&a.bh<b.bh)return ;
if(a.fs==b.fs&&a.bh>b.bh)return ;
return ;
} void Heib()
{
int lf=,rt=,zz=;
while(lf<=Rs/&&rt<=Rs/)
{
if(winner[lf].fs>loser[rt].fs||(winner[lf].fs==loser[rt].fs&&winner[lf].bh<loser[rt].bh))
{
player[zz].bh=winner[lf].bh;
player[zz].fs=winner[lf].fs;
player[zz].nl=winner[lf].nl;
zz++;
lf++;
}
if(winner[lf].fs<loser[rt].fs||(winner[lf].fs==loser[rt].fs&&winner[lf].bh>loser[rt].bh))
{
player[zz].bh=loser[rt].bh;
player[zz].fs=loser[rt].fs;
player[zz].nl=loser[rt].nl;
zz++;
rt++;
}
}
while(lf<=Rs/||rt<=Rs/)
{
if(lf<=Rs/)
{
player[zz].bh=winner[lf].bh;
player[zz].fs=winner[lf].fs;
player[zz].nl=winner[lf].nl;
lf++;
}
if(rt<=Rs/)
{
player[zz].bh=loser[rt].bh;
player[zz].fs=loser[rt].fs;
player[zz].nl=loser[rt].nl;
rt++;
}
zz++;
}
return;
}

【题外话2:其实两篇解题报告之间我还A了几道题,不过都太简单或者太恶心到我不想写题解……OYZ】

【题外话3:这里是个准初三狗,一开学成了初三狗之后估计就不会太快更新了……】

【解题报告】瑞士轮(NOIP2011普及组T3)的更多相关文章

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

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

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

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

  3. NOIP2008 普及组T3 传球游戏 解题报告-S.B.S.

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  4. NOIP2011普及组 瑞士轮

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

  5. NOIP2012 普及组 T3 摆花——S.B.S.

    题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...

  6. [NOIP2011] 普及组

    数字反转 小模拟 #include<cstdio> #include<iostream> #include<cstring> using namespace std ...

  7. NOIP2011普及组 数字反转

    题目OJ链接: http://codevs.cn/problem/1130/ https://www.luogu.org/problemnew/show/P1307 2011年NOIP全国联赛普及组 ...

  8. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)

    题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...

  9. NOIP2011普及组 瑞士环 保序性

    题目链接:http://noi.openjudge.cn/ch0401/4363/ 分析:如果直接模拟,时间复杂度是O(r*nlogn)超时 然后我们发现每次一轮开始时,刚开始是保序的,然后我们可以把 ...

随机推荐

  1. CentOS 6.5安装之后的网络配置

    CentOS 6.5安装之后的网络配置 1.查看IP地址,得到只有一个回环地址 127.0.0.1 2.进行网络测试,现在来测试下,看能不能ping通外网www.baidu.com 下面的是,关于pi ...

  2. 动态网站加速,cdn义不容辞

    "双十一"大战已经落下帷幕,各大电商纷纷拿出了亮眼的成绩单,但在这些成绩单的背后,CDN加速技术是功不可没的.随着互联网的发展,电商.视频直播等网站的火热,以及各个云加速平台的流行 ...

  3. CentOS 手动增加、删除swap区

    SWAP是Linux中的虚拟内存,用于扩充物理内存不足而用来存储临时数据存在的.它类似于Windows中的虚拟内存.在Windows中,只可以使用文件来当作虚拟内存.而linux可以文件或者分区来当作 ...

  4. 从后台调用前台js

    引用: using System.Web.UI; ScriptManager.RegisterClientScriptBlock(this, GetType(), "Js", &q ...

  5. re模块 | Python 3.5

    https://docs.python.org/3/library/re.html http://www.cnblogs.com/PythonHome/archive/2011/11/19/22554 ...

  6. db2 表空间容器调整

    1.查看当前容器的分布,并确定如何调整 db2look -d sample -l -cor -dp -o dd.sql 2.给表空间添加容器 db2 "alter tablespace tb ...

  7. iOS程序崩溃相关的处理办法

    一.bug追踪 1.捕获异常:Exception breakpoint 步骤: 2.终止调用:Symbolic breakpoint 步骤:前两步和一 基本是一样的,不截图了,只是在第二步选择的时候选 ...

  8. tcp协议栈

    TCP/IP是互联网的核心协议,也是大多数网络应用的核心协议.就前面一段时间面试中问到的TCP/IP问题,这里给出一个简单的小结.   TCP由RFC793.RFC1122.RFC1323.RFC20 ...

  9. 最受欢迎的iOS第三方SDK

    http://www.raywenderlich.com/forums/viewtopic.php?t=4496

  10. 集成shareSDK的微信、QQ API导致cocoaPods找不到类symbol问题的解决方法

    因为shareSDK的微信和QQ API都只支持32位的,而cocoaPods默认要支持64位的,所以如果在工程中导入这两个API会出问题. 解决方法我就不转载啦,原文在这里: http://blog ...