zoukankan      html  css  js  c++  java
  • 洛谷1309:瑞士轮——题解

    https://www.luogu.org/problem/P1309

    我觉得我大概已经是个zz了,普及题都不会做还得看题解,难受。

    $O(rnlogn)$肯定过不了(过了也没意义)

    复杂度能降下来肯定序列是有规律可循的。

    于是可以发现,胜者组和败者组他们的s永远都是单调减的。

    然后就把两个有序的胜者组和败者组合并就行了,和归并排序差不多。

    我的智商已如风中残烛。

    #include<map> 
    #include<cmath>
    #include<queue>
    #include<cstdio>
    #include<vector>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=2e5+5;
    inline int read(){
        int X=0,w=0;char ch=0;
        while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
        while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
        return w?-X:X;
    }
    struct people{
        int s,w,id;
    }a[N],b[N],c[N];
    int n,r,q;
    bool cmp(people x,people y){
        if(x.s==y.s)return x.id<y.id;
        return x.s>y.s;
    }
    void msort(){
        for(int i=1,j=1;i<=2*n;i+=2,j++){
            if(a[i].w>a[i+1].w){
                b[j]=a[i];b[j].s++;
                c[j]=a[i+1];
            }else{
                b[j]=a[i+1];b[j].s++;
                c[j]=a[i];
            }
        }
        for(int i=1,j=1,k=1;i<=2*n;i++){
            if(j<=n&&(k>n||(b[j].s>c[k].s||(b[j].s==c[k].s&&b[j].id<c[k].id))))a[i]=b[j++];
            else a[i]=c[k++];
        }
    }
    int main(){
        n=read();r=read();q=read();
        for(int i=1;i<=2*n;i++){
            a[i].s=read();
            a[i].id=i;
        }
        for(int i=1;i<=2*n;i++)a[i].w=read();
        sort(a+1,a+2*n+1,cmp);
        for(int i=1;i<=r;i++){
            msort();
        }
        printf("%d",a[q].id);
        return 0;
    }

    +++++++++++++++++++++++++++++++++++++++++++

     +本文作者:luyouqi233。               +

     +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

    +++++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    systemtap没找到函数变量
    systemtap get var of the tracepoing
    如何在tracepoint上注册函数
    stap中的entry函数
    stap用法
    在submit_bio处使用stapn
    巴达努斯
    perf事件的切换
    perf原理再看
    内存回收的阈值
  • 原文地址:https://www.cnblogs.com/luyouqi233/p/11312027.html
Copyright © 2011-2022 走看看