zoukankan      html  css  js  c++  java
  • 2019沈阳icpc网络赛H德州扑克

    题面:https://nanti.jisuanke.com/t/41408

    题意:A,2,3,4,5,6,7,8,9,10,J,Q,K,13张牌,无花色之分,val为1~13。

    给n个人名+n个牌,输出人名的ranklist

    比较规则:

    皇家顺最大

    顺子第二,都是顺看最大牌的val

    四条第三,先看四张相同牌的val,再看剩下那张牌的val

    葫芦第四,先看三张相同牌的val,再看两张相同牌的val

    三条第五,先看三张相同牌的val,再看剩下两张牌的val之和

    两对第六,先看大的两张相同牌的val,再看小的两张相同牌的val,再看剩下一张牌的val

    一对第七,先看两张相同牌的val,再看剩下三张牌的val之和

    高牌第八,看五张牌的val之和

    比较完还分不出来两幅牌谁赢,看名字,字典序小的赢(不会有相同的名字)。

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int maxn=1e5+500;
    struct node
    {
        string name;
        int ranks;
        int val;
        int a[50];
    }p[maxn];
    
    pair<int,int> calrank(int e,int d,int c,int b,int a)
    {
    //a>=b>=c>=d>=e
        pair<int,int> pa;
        if(a==13&&b==12&&c==11&&d==10&&e==1){pa.first=0;pa.second=13;}
        else if(a-b==1&&b-c==1&&c-d==1&&d-e==1){pa.first=1;pa.second=a;}
        else if(b==e){pa.first=2;pa.second=b*100+a;}
        else if(a==d){pa.first=2;pa.second=a*100+e;}
        else if(a==c&&d==e){pa.first=3;pa.second=a*100+d;}
        else if(a==b&&c==e){pa.first=3;pa.second=c*100+a;}
        else if(a==c){pa.first=4;pa.second=a*100+d+e;}
        else if(b==d){pa.first=4;pa.second=b*100+a+e;}
        else if(c==e){pa.first=4;pa.second=c*100+a+b;}
        else if(a==b&&c==d){pa.first=5;pa.second=a*10000+c*100+e;}
        else if(a==b&&d==e){pa.first=5;pa.second=a*10000+e*100+c;}
        else if(b==c&&d==e){pa.first=5;pa.second=b*10000+d*100+a;}
        else if(a==b){pa.first=6;pa.second=a*100+c+d+e;}
        else if(b==c){pa.first=6;pa.second=b*100+a+d+e;}
        else if(c==d){pa.first=6;pa.second=c*100+a+b+e;}
        else if(d==e){pa.first=6;pa.second=d*100+a+b+c;}
        else{pa.first=7;pa.second=a+b+c+d+e;}
        return pa;
    }
    
    bool cmp(node a,node b)
    {
        if(a.ranks==b.ranks)
        {
            if(a.val==b.val)return a.name<b.name;
            return a.val>b.val;
        }
        else return a.ranks<b.ranks;
    
    }
    bool cmp2(int a,int b)
    {
        return a<b;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        int n;
        while(cin>>n)
        {
            for(int i=1;i<=n;i++)
            {
                string pai;
                cin>>p[i].name>>pai;
                for(int k=0,j=0;pai[k];k++)
                {
                    if(pai[k]=='0')continue;
                    if(pai[k]>='2'&&pai[k]<='9')p[i].a[j]=pai[k]-48;
                    else if(pai[k]=='A')p[i].a[j]=1;
                    else if(pai[k]=='J')p[i].a[j]=11;
                    else if(pai[k]=='Q')p[i].a[j]=12;
                    else if(pai[k]=='K')p[i].a[j]=13;
                    else if(pai[k]=='1')p[i].a[j]=10;
                    j++;
                }
                sort(p[i].a,p[i].a+5,cmp2);
                pair<int,int>pa2;
                pa2=calrank(p[i].a[0],p[i].a[1],p[i].a[2],p[i].a[3],p[i].a[4]);
                p[i].ranks=pa2.first;
                p[i].val=pa2.second;
            }
            sort(p+1,p+n+1,cmp);
            for(int i=1;i<=n;i++)
            cout<<p[i].name<<endl;
        }
        return 0;
    }
    View Code

    我太难了

    ...

  • 相关阅读:
    常见的五种App开发模式
    iOS提供的实用的属性和方法
    iOS开发思想
    iOS函数式编程
    iOS链式编程范例
    ios不起眼的错误
    iOS将汉字转成拼音
    ReactiveCocoa
    LuaViewSDK
    pycharm配置qtdesigner
  • 原文地址:https://www.cnblogs.com/myrtle/p/11519867.html
Copyright © 2011-2022 走看看