当前位置: 首页 > news >正文

洛谷 P1309 [NOIP 2011 普及组] 瑞士轮

题目背景

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

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

题目描述

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

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

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

输入格式

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

第二行是 2×N 个非负整数 s1​,s2​,…,s2×N​,每两个数之间用一个空格隔开,其中 si​ 表示编号为 i 的选手的初始分数。

第三行是 2×N 个正整数 w1​,w2​,…,w2×N​,每两个数之间用一个空格隔开,其中 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≤10000;

对于 100% 的数据,1≤N≤105,1≤R≤50,1≤Q≤2×N,0≤s1​,s2​,…,s2×N​≤108,1≤w1​,w2​,…,w2×N​≤108。

noip2011 普及组第 3 题。

#include<bits/stdc++.h> using namespace std; const int N=2e5+10; int n,r,q; struct node{ int s,w,id; }a[N]; node x[N],y[N];//胜利组 失败组 bool cmp(node& r,node& u) { if(r.s==u.s) return r.id<u.id; return r.s>u.s; } void merge() { //合并两个有序数组 int i=1; int cur1=1,cur2=1; while(cur1<=n&&cur2<=n) { if(x[cur1].s>y[cur2].s||(x[cur1].s==y[cur2].s&&x[cur1].id<y[cur2].id)) { a[i++]=x[cur1++]; }else { a[i++]=y[cur2++]; } } while(cur1<=n) a[i++]=x[cur1++]; while(cur2<=n) a[i++]=y[cur2++]; } int main() { cin>>n>>r>>q; for(int i=1;i<=n+n;i++) { cin>>a[i].s; a[i].id=i; } for(int i=1;i<=n+n;i++) { cin>>a[i].w; } sort(a+1,a+1+n+n,cmp); while(r--) { int pos=1; for(int i=1;i<=n+n;i+=2) { if(a[i].w>a[i+1].w) { a[i].s++; x[pos]=a[i]; y[pos]=a[i+1]; }else{ a[i+1].s++; x[pos]=a[i+1]; y[pos]=a[i]; } pos++; } merge(); } cout<<a[q].id<<endl; return 0; }
http://www.jsqmd.com/news/585051/

相关文章:

  • Go Context 取消信号传播机制详解
  • FRCRN语音降噪效果实测:对比传统谱减法,信噪比提升30%+案例
  • EmbeddingGemma-300m场景应用:Ollama实现电商商品语义搜索
  • CRMEB Pro私域会员电商系统 v4.0正式发布,私域直播,边看边买!
  • 数据库课程设计新思路:集成SenseVoice-Small构建语音查询系统
  • 案例集锦:Face Analysis WebUI在不同光照、角度下的人脸分析效果对比
  • Qwen3-14B处理LSTM时间序列预测任务:模型构建与结果分析指南
  • OpenClaw硬件监控:Qwen3-14B实时预警电脑温度与磁盘空间
  • c 避暗实验视频分析系统实验需求 穿梭避暗实验箱 大鼠避暗箱
  • Miniconda-Python3.11快速部署:适合新手的完整指南
  • 2026年靠谱的山东钢结构平台/钢结构雨棚/钢结构深度厂家推荐 - 行业平台推荐
  • Z-Image Atelier 与数据库课程设计结合:构建AI图像生成管理平台
  • YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统
  • SDMatte透明物体处理教程:轻薄纱布一键抠图,边缘抗锯齿效果展示
  • BGE-M3 BGE-M3惊艳效果展示:三模态混合检索Top-K准确率对比图
  • OpenClaw代码助手:Qwen3-14b_int4_awq实现的自动补全与错误检查
  • 节出来的 00 后,没做聊天壳子,先盯上了你的 Enter 键
  • 2026年3月旅拍婚纱照工作室测评,探寻优质之选,目前知名的旅拍品牌哪家好甄选实力品牌 - 品牌推荐师
  • Wan2.2-I2V-A14B快速开始:使用MobaXterm远程连接GPU服务器并部署
  • GTE+SeqGPT部署教程:Windows WSL2环境下GTE+SeqGPT全链路运行指南
  • 文墨共鸣快速体验:上传两段文本,立即获得朱砂印章相似度评分
  • 物联网毕业设计本科生开题指导
  • 大模型---RAG
  • 软件测试人必学:ISO 25010:2011八大质量属性详解
  • 2026年知名的钢结构/钢结构屋面/山东钢结构异形/山东钢结构屋面推荐品牌厂家 - 行业平台推荐
  • Unity Shader 顶点色:利用模型顶点颜色传递渲染数据
  • 计算机网络核心:OSI/RM七层模型与TCP/IP模型详解——软件设计师备考指南
  • gpedit.msc无法启动,提示:管理员已阻止你运行此应用;services.msc无法启动,提示:管理员已阻止你运行此应用
  • 加餐 AI 架构师面试高频题精选与解题思路
  • 3类脑肿瘤目标检测数据集该数据集已经包括3个类别分别是:‘glioma_tumor‘, ‘meningioma_tumor‘,‘pituitary_tumor‘总计图片2908张图像,分辨率是5