码迷,mamicode.com
首页 > 其他好文 > 详细

P1309 瑞士轮

时间:2020-06-06 21:22:07      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:变化   tab   复杂   复杂度   ios   turn   names   return   快速   

 

我一开始看着这个题

简单的以为

本题是一个模拟外加排序

 

所以直接一手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 瑞士轮

标签:变化   tab   复杂   复杂度   ios   turn   names   return   快速   

原文地址:https://www.cnblogs.com/-Iris-/p/13056315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!