洛谷P1309 瑞士轮
题目大意:
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 瑞士轮的更多相关文章
- 洛谷P1309 瑞士轮(归并排序)
To 洛谷.1309 瑞士轮 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平, ...
- 洛谷 P1309 瑞士轮 解题报告
P1309 瑞士轮 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低 ...
- NOIP2011 普及组 T3 洛谷P1309 瑞士轮
今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...
- 洛谷 P1309 瑞士轮
题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...
- 洛谷P1309——瑞士轮(归并排序)
https://www.luogu.org/problem/show?pid=1309#sub 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点 ...
- 洛谷 - P1309 - 瑞士轮 - 归并排序
https://www.luogu.org/problemnew/show/P1309 一开始写的直接快排没想到真的TLE了. 想到每次比赛每个人前移的量不会很多,但是不知从哪里开始优化. 搜索一下原 ...
- 洛谷 P1309 瑞士轮 题解
每日一题 day4 打卡 Analysis 暴力+快排(其实是归并排序) 一开始天真的以为sort能过,结果光荣TLE,由于每次只更改相邻的元素,于是善于处理随机数的快排就会浪费很多时间.于是就想到归 ...
- 洛谷P1309 瑞士轮——题解
题目传送 思路非常简单,只要开始时把结构体排个序,每次给赢的加分再排序,共r次,最后再输出分数第q大的就行了. (天真的我估错时间复杂度用每次用sort暴力排序结果60分...)实际上这道题估算时间复 ...
- P1309 瑞士轮 (吸氧了)
P1309 瑞士轮 题解 1.这题可以模拟一下 2.sort吸氧可以过(可能是排序有点慢吧,不开会T) sort排序时注意: return 1 是满足条件,不交换 return 0是不满足,交换 代码 ...
随机推荐
- git 提交作业流程
git 提交作业流程,主要分为4个步骤 # 拉取远程git最新版本到本地,每次都可以先执行这条命令,因为会有其他同学更新仓库 git pull # add需要上传的文件,那个文件修改或者新增的,就ad ...
- JSON的多样格式
//JSON – Properties 方便前台列表显示 [{"年月":2002.01,"北京分公司":2214688,"河北分公司":3 ...
- pdflush进程介绍与优化【转】
转载地址: http://blog.ops88.com/2012/07/12/74 一. /proc/sys/vm/dirty_background_ratio 该参数是在尝试一个write ba ...
- clientWidth、offsetWidth等介绍
网页可见区域宽:document.body.clientWidth网页可见区域高:document.body.clientHeight网页可见区域宽:document.body.offsetWidth ...
- 应用性能管理工具PinPoint介绍
概述: 下面介绍一个开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint.一个分布式事务跟踪系统的平台,思路基于google ...
- jmap和jstack使用
http://blog.csdn.net/sinat_29581293/article/details/70214436
- C++:后缀表达式
1.基本概念 后缀表示法也叫逆波兰表示法(前缀就是波兰表示法),由于所有的操作符都在操作数的后面,所以被称为后缀表示法. 中缀表示法的操作符在操作数之间,也是最符合人的逻辑.前缀表示法的操作符在操作数 ...
- Appium 测试APK
介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台测试.Appium使用WebDriver的json w ...
- 获取url的hash值
location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url. 而location ...
- node 适合 5000 人同时在线左右的 游戏开发
游戏开发性能的一些讨论 上面这个问题是在游戏上线前的一个性能顾虑 (但他确实是node多进程通讯间的一个比较麻烦的问题,数据一大就会出现性能上的瓶颈) 我们项目(手游)已经上线了,单服最高同时在线4. ...