题目链接:https://www.luogu.com.cn/problem/P1309

如果是新手可能马上会想到sort排序,每比一次就排一次,但是这样的时间复杂度有点高,只有60分;

这是因为每次比完赛会产生两个有序数列(输/赢),只需要把这两个有序数列合并成一个有序数列,而sort则是排了所有的数,显然浪费了时间

一提到有序数列,会想到归并排序——由于两个有序数列是现成的,所以只要并就行了,省了不少时间,可以AC

上代码:

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,r,q;
4 int a[200100],s[200100],w[200100],win[200100],lose[200100];//a——序号,s——分数,w——战力
5 bool cmp(int a,int b){//排序的时候判断大小(用标号)
6 if(s[a]==s[b]){
7 return a<b;
8 }
9 return s[a]>s[b];
10 }
11 void Q(){//归并排序——并
12 int i,j;
13 i=j=1,a[0]=0;
14 while(i<=win[0]&&j<=lose[0]){//输赢两个有序序列,所以直接并
15 if(cmp(win[i],lose[j]))
16 a[++a[0]]=win[i++];//回到a(序号)数组
17 else
18 a[++a[0]]=lose[j++];
19 }
20 while(i<=win[0])a[++a[0]]=win[i++];
21 while(j<=lose[0])a[++a[0]]=lose[j++];//处理掉剩余的数
22 }
23 int main(){
24 cin>>n>>r>>q;
25 n*=2;
26 for(int i=1;i<=n;i++){
27 cin>>s[i];
28 }
29 for(int i=1;i<=n;i++){
30 cin>>w[i];
31 a[i]=i;
32 }
33 sort(a+1,a+n+1,cmp);//先快排一次
34 for(int i=1;i<=r;i++){
35 win[0]=lose[0]=0;//0的正好没用,用来计数
36 for(int j=1;j<=n;j+=2){
37 if(w[a[j]]>w[a[j+1]]){//判断哪方胜利
38 s[a[j]]++;
39 win[++win[0]]=a[j];
40 lose[++lose[0]]=a[j+1];//加入
41 }
42 else{
43 s[a[j+1]]++;
44 win[++win[0]]=a[j+1];
45 lose[++lose[0]]=a[j];
46 }
47 }
48 Q();
49 }
50 cout<<a[q];//结束
51 return 0;
52 }

0025:2011年NOIp普及组真题——瑞士轮题解的更多相关文章

  1. NOIP2012 普及组真题 4.13校模拟

    考试状态: 我今天抽签看了洛谷的… 这我能怂???凶中带吉,我怕考试??我!不!怕! 看着整个机房的男同学们,我明白我是不会触发我的忌了.很好,开刷. A. [NOIP2012普及组真题] 质因数分解 ...

  2. 纪中10日T1 2300. 【noip普及组第一题】模板题

    2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms  空间限制: 262144 K ...

  3. 2011年NOIP普及组复赛题解

    题目涉及算法: 数字反转:模拟: 统计单词数:模拟: 瑞士轮:模拟/排序: 表达式的值:后缀表达式/DP. 数字反转 题目链接:https://www.luogu.org/problem/P1307 ...

  4. 排座椅 2008 NOIP 普及组 第二题

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  5. $NOIp$普及组做题记录

    \([NOIp2014]\) 螺旋矩阵 \(Sol\) 直接模拟,一次走一整行或者一整列.复杂度\(O(n)\). \(Code\) #include<bits/stdc++.h> #de ...

  6. [NOIP普及组2011]装箱问题

    目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 样例 输入 输出 前缀知识 题解 题目名称:装箱问题 来源:2011年NOIP普及组 链接 博客链接 CSDN 洛谷博客 题目链接 ...

  7. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  8. 2016.9.3初中部上午NOIP普及组比赛总结

    2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...

  9. 2321. 【NOIP普及组T1】方程

    2321. [NOIP普及组T1]方程 时间限制: 1000 ms  空间限制: 262144 KB 题目描述

随机推荐

  1. 集成 Spring Doc 接口文档和 knife4j-SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 04 -集成 Spring Doc 接口文档和 knife4j 前面已经集成 MyBatis Plus.Druid 数据源,开发了 5 个接口. ...

  2. 【面试题】纯css实现三角形,你知道如何实现吗?

    纯css实现三角形 点击打开视频教程 <template> <div id="app"> <!-- 纯css实现三角形书写 --> <di ...

  3. jsp获取多选框组件的值

    jsp获取多选框组件的值 1.首先写一个带有多选框的前台页 1 <%@ page language="java" contentType="text/html; c ...

  4. spring-aop-事务-注解开发-代理

    1.spring + mybatis: Aop流程: 提前定义好几个用于Aop的类 前置通知:新建MyBeForeAdvice类 实现 MethodBeforeAdvice,并实现其方法 后置通知:新 ...

  5. HEXO-admin安装和使用(汉化版)

    hi,大家好,我是KINGWDY,众所周知我用的是hexo,写博文首先要在终端输入hexo n xxxxx,然后打开MWeb PRO开始写md,但是,这很麻烦,就在我一筹莫展之际,我看到了这篇博文-- ...

  6. 做自动化测试选择Python还是Java?

    你好,我是测试蔡坨坨. 今天,我们来聊一聊测试人员想要进阶,想要做自动化测试,甚至测试开发,如何选择编程语言. 前言 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的 ...

  7. 快速搭建 SpringCloud Alibaba Nacos 配置中心!

    Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录.而 Nacos 作为 Spring Cloud Alibaba 的核心 ...

  8. .NET 7 SDK 对容器的内置支持

    大家好,我是等天黑. .NET 又双叒叕出新功能了, 就在前几天,.NET 团队发布博客,宣称在 .NET SDK 中内置了对 .NET 应用容器化的支持. 小试牛刀 在正式介绍它之前,先通过一个简单 ...

  9. Linux之博客系统的搭建

    博客系统 三种配置:php+nginx+mysql 搭建步骤 改主机名 hostnamectl set-hostname lnmp 传入LNMP压缩包于root下(略) 配置网络(略)及yum源 先检 ...

  10. KingbaseES R6 集群修改物理IP和VIP案例

    在用户的实际环境里,可能有时需要修改主机的IP,这就涉及到集群的配置修改.以下以例子的方式,介绍下KingbaseES R6集群如何修改IP. 一.案例测试环境 操作系统: [KINGBASE@nod ...