P1309 瑞士轮

Posted -iris-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1309 瑞士轮相关的知识,希望对你有一定的参考价值。

 

我一开始看着这个题

简单的以为

本题是一个模拟外加排序

 

所以直接一手sort

然后喜提60分

所以我仔细研究了一下

 

发现每个人都只和前一个人比赛

所以排序变化仅在2人之间

 

所以明显归并排序的复杂度要快于快速排序

 

所以

可以将sort改成手写的归并排序

 

但是……

我是个懒人

所以直接stable_sort

algorithm函数中的归并排序

 

见代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 struct node{
 5     int id;
 6     int s;
 7     int w;
 8     
 9 }a[200005];
10 bool comp(node a,node b){
11     if(a.s!=b.s) return a.s>b.s;
12     else return a.id<b.id;
13 }
14 int main()
15 {
16     int N,R,Q;
17     int ans=0;
18     cin>>N>>R>>Q;
19     for(int i=1;i<=2*N;i++)
20         cin>>a[i].s ;
21     for(int i=1;i<=2*N;i++)
22         cin>>a[i].w ;
23     for(int i=1;i<=2*N;i++)
24         a[i].id=i;
25     sort(a+1,a+1+2*N,comp);
26     while(ans!=R)
27     {
28         for(int i=1;i<=2*N;i+=2)
29             if(a[i].w>a[i+1].w) a[i].s++;
30             else a[i+1].s++;
31         ans++;
32         stable_sort(a+1,a+1+2*N,comp);
33     }
34     cout<<a[Q].id;
35 }

 

 

-end-

 

以上是关于P1309 瑞士轮的主要内容,如果未能解决你的问题,请参考以下文章

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

P1309 瑞士轮

P1309 瑞士轮

P1309 瑞士轮 未完成 60

luogu P1309 瑞士轮排序

洛谷P1309 瑞士轮