传送门

题目大意:

2*n个人,有初始的比赛分数和实力值。

每次比赛前总分从大到小排序,总分相同编号小的排在前面。

每次比赛是1和2比,3和4比,5和6比。

实力值大的获胜得1分。

每次比赛前排序确定比赛顺序。

题解:

模拟60

哎呀忘记最后一次排序

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 200007
using namespace std; int n,r,q,t; struct P{
int id,sc,h;
}a[N]; bool cmp(P a,P b){
if(a.sc==b.sc)return a.id<b.id;
return a.sc>b.sc;
} int main(){
scanf("%d%d%d",&n,&r,&q);t=n;n*=;
for(int i=;i<=n;i++){
scanf("%d",&a[i].sc);
a[i].id=i;
}
for(int i=;i<=n;i++)scanf("%d",&a[i].h);
for(int i=;i<=r;i++){
sort(a+,a+n+,cmp);
for(int i=;i<=t;i++){
if(a[*i].h>a[*i-].h)a[*i].sc++;
else a[*i-].sc++;
}
}
sort(a+,a+n+,cmp);
printf("%d\n",a[q].id);
return ;
}

60

正解:模拟+归并排序

60分做法时间复杂度是O()

sort的时间复杂度nlogn的

可以发现,在进行一轮比赛之后

胜的队伍+1,

败的队伍不变

所以胜的队伍的大小关系不变,败的队伍大小关系不变。

那么把每一轮胜的队伍和败的队伍分比放在一个数组里

像归并排序一样并起来。由于两个数组已经是有序的了,

所以排序的时间复杂度是O(n)的。

优化前O(r*nlogn+r*n),优化后O(2rn)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 200007
using namespace std; int n,r,q,t,win,lose; struct P{
int id,sc,h;
}a[N],w[N],l[N]; bool cmp(P a,P b){
if(a.sc==b.sc)return a.id<b.id;
return a.sc>b.sc;
} bool Cp(int c1,int c2,int id1,int id2){
if(c1>c2)return true;
if(c1==c2&&id1<id2)return true;
return false;
} void merge(int ll,int rr){
int l1=ll,l2=ll,k=ll;
while(l1<=rr&&l2<=rr){
if(Cp(w[l1].sc,l[l2].sc,w[l1].id,l[l2].id))a[k++]=w[l1++];
else a[k++]=l[l2++];
}
while(l1<=rr)a[k++]=w[l1++];
while(l2<=rr)a[k++]=l[l2++];
} int main(){
scanf("%d%d%d",&n,&r,&q);t=n;n*=;
for(int i=;i<=n;i++){
scanf("%d",&a[i].sc);
a[i].id=i;
}
for(int i=;i<=n;i++)scanf("%d",&a[i].h);
sort(a+,a+n+,cmp);
for(int i=;i<=r;i++){
win=;lose=;
for(int j=;j<=t;j++){
if(a[j*].h>a[j*-].h)w[++win]=a[j*],w[win].sc++,l[++lose]=a[j*-];
else w[++win]=a[j*-],w[win].sc++,l[++lose]=a[j*];
}
merge(,t);
}
printf("%d\n",a[q].id);
return ;
}

AC

洛谷P1309 瑞士轮的更多相关文章

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

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

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

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

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

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

  4. 洛谷 P1309 瑞士轮

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

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

    https://www.luogu.org/problem/show?pid=1309#sub 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点 ...

  6. 洛谷 - P1309 - 瑞士轮 - 归并排序

    https://www.luogu.org/problemnew/show/P1309 一开始写的直接快排没想到真的TLE了. 想到每次比赛每个人前移的量不会很多,但是不知从哪里开始优化. 搜索一下原 ...

  7. 洛谷 P1309 瑞士轮 题解

    每日一题 day4 打卡 Analysis 暴力+快排(其实是归并排序) 一开始天真的以为sort能过,结果光荣TLE,由于每次只更改相邻的元素,于是善于处理随机数的快排就会浪费很多时间.于是就想到归 ...

  8. 洛谷P1309 瑞士轮——题解

    题目传送 思路非常简单,只要开始时把结构体排个序,每次给赢的加分再排序,共r次,最后再输出分数第q大的就行了. (天真的我估错时间复杂度用每次用sort暴力排序结果60分...)实际上这道题估算时间复 ...

  9. P1309 瑞士轮 (吸氧了)

    P1309 瑞士轮 题解 1.这题可以模拟一下 2.sort吸氧可以过(可能是排序有点慢吧,不开会T) sort排序时注意: return 1 是满足条件,不交换 return 0是不满足,交换 代码 ...

随机推荐

  1. Eclipse创建Maven聚合项目

    整体架构图 1.新建父工程 新建maven父项目(用来管理jar包版本),使子系统使用同一个版本的jar包. File->New->Other->Maven Project,打包方式 ...

  2. 【IIS转】:解决IIS下localhost访问需要输入用户名和密码的问题

    [摘要]安装完IIS后,我们可能会发现浏览器输入localhost访问时提示我们输入用户名和密码,本文介绍了这种问题的解决方法,方便站长们调试自己的程序. 在我们的WIN XP系统中安装了IIS,但是 ...

  3. HDU 4696 Answers (脑补+数形结合)

    题意 给一个图,每个点的出度为1,每个点的权值为1或者2.给Q个询问,问是否能找到一条路径的权值和M. 思路 由于每个点的出度为1,所以必然存在环.又因为c[i]只能取1或者2,可以组成任意值,所以只 ...

  4. C++:tinyxml的使用

    1. 简介 TinyXML2(最新版本)是一个开源的功能齐全的XML解析库 For C++,源码见:github. 2. 开始使用 首先从Github上获得源码,是一个完整的演示工程,我们只需要其中的 ...

  5. vue环境的搭建

    一.首先要安装nodejs : 别去官网下,慢的要死,这是国内的什么版本都有.地址 这是我下载的. 然后就傻瓜式安装. 验证是否安装成功 二.node.js的环境变量的新建.  //我安装的路径是D: ...

  6. LeetCode OJ:Number of 1 Bits(比特1的位数)

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  7. 使用CGLib完成代理模式遇到的错误

    错误堆栈信息: Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type ...

  8. zookeeper的c API 单线程与多线程问题 cli_st和cli_mt

    同样的程序,在centos和ubuntu上都没有问题,在solaris上问题却多多,据说是solaris管理更加严格. zookeeper_init方法,在传入一个错误的host也能初始化出一个非空的 ...

  9. MySQL单独存放表空间Innodb_file_per_table

    在mysql中Innodb_file_per_table参数的作用是什么呢,其实许多的朋友是不知道的,今天我们来看这篇MySQL单独存放表空间Innodb_file_per_table参数详解之后你就 ...

  10. three.js入门系列之视角和辅助线

    假设你已经创建好了three.js的开发环境(我是写在vue项目中的),那么接下来,从头开始演示是如何用three.js来构建3D图形的.(笔记本写的代码,屏幕小,所以为了能够整屏看到完整代码,就将字 ...