• 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-

  • 相关阅读:
    淘宝Banner 轮播图
    JavaScript move简易版运动框架封装
    javaScript 导航栏
    JS 运动框架完整版
    Js 数组操作
    JS 动画轮播效果
    JavaScritpt 字符串操作
    Java AOP切面编程方式
    时间版 运动框架
    Nmon的安装及使用
  • 原文地址:https://www.cnblogs.com/-Iris-/p/13056315.html
Copyright © 2020-2023  润新知