2019瀋陽ICPCネットワークHテキサスホールデムトーナメント

質問表面:https://nanti.jisuanke.com/t/41408

質問の意味:A、2,3,4,5,6,7,8,9,10、J、Q、K、13枚のカード、ノーカラーポイント、ヴァル1〜13。

ブランド名の出力にN + nは個人名ranklist

比較ルール:

ロイヤル俊最大

純子は、第二、一緒にすべてのヴァルで最大の名前を表示するには

24(3)、そのカードの残りvalのを見て、同じ4枚のカードのValを見て

ひょうたん第四には、二つの同一のカードvalを見て、同じヴァルの3枚のカードを見て

三第五、valは2枚のカードの残りの部分を見て、同じヴァルの3枚のカードを見て、

二対の第六、カードのvalの残りの部分を見て、2のvalの同じブランドの小さなを見て、大きな二つの同一カードのvalを見ます

第七の一組、二つの同一のカードvalのを見て、valが3枚のカードの残りの部分を見て、

第八高いカード、5枚のカードのvalのを見て、

また、(同じ名前を持っていない)、名前を見て、勝利の二枚のカードに近すぎる終え辞書式の小さな勝利と比較します。

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#define INF 0x3f3f3f3f 
typedefの長い 長いLL。
const  int型 MAXN = 1E5 + 500 構造体ノード
{ 
    文字列名。
    int型のランクを。
    int型のval;
    INT [ 50 ]。
} P [MAXN]。
 < INTINT > calrank(int型 E、int型 D、int型 C、int型 B、INT A)
{ 
//> = B> = C> = D> = Eの 
    対< INTINT > PA。
    もし(== 13 && Bの== 12 && C == 11 && D == 10 && E == 1){pa.first = 0 ; pa.second = 13 ;}
     そうでない 場合(AB == 1つの && B-Cの== 1 && C-D == 1 && D-E == 1){pa.first = 1 ; pa.second = A;}
     そうでない 場合(B == E){pa.first = 2 ; pa.second = B * 100 + A;}
     それ以外の 場合(== d)は{pa.first = 2 ; pa.second = A * 100 + E;}
     そうでない 場合(A == C && D == E){pa.first = 3 ; pa.second = A * 100 + D;}
     そうでない 場合(== bの&& C == E){pa.first = 3 ; pa.second = C * 100 + ;}
     そうでない 場合(A == C){pa.first = 4 ; pa.second = * 100 + D + E;}
     そうでない 場合(B == D){pa.first = 4 ; pa.second = B * 100 + A + E;}
     そうでない 場合(C == E){pa.first = 4 ; pa.second = C *100 + A + B;}
     そうでない 場合(== bの&& C == D){pa.first = 5 ; pa.second = A * 10000 + C * 100 + E;}
     そうでない 場合(&& D == E == b)は{pa.first = 5 ; pa.second = A * 10000 + E * 100 + C;}
     そうでない 場合(B == C && D == E){pa.first = 5 ; pa.second = B * 10000 + D * 100 + ;}
     そうでない 場合(A == B){pa.first = 6 ; pa.second = A * 100 + C + D + E;}
     そうでない 場合(B == C){pa.first = 6; pa.second = B * 100 + A + D + E;}
     そうでない 場合(C == D){pa.first = 6 ; pa.second = C * 100 + A + B + E;}
     そうでない 場合(D == E){pa.first = 6 ; pa.second = D * 100 + A + B + C;}
     そうでなければ {pa.first = 7 ; pa.second = A + B + C + D + E;}
     戻りPA。
} 

BOOL CMP(ノードA、ノードB)
{ 
    場合(a.ranks == b.ranks)
    { 
        場合(a.val == b.val)戻り a.name < b.name。
        返す a.val>b.val; 
    } 
    他に 戻り a.ranks < b.ranks。

} 
ブール CMP2(INT A、INT B)
{ 
    戻り < Bと、
} 
int型のmain()
{ 
    IOS :: sync_with_stdio()。
    int型のn;
    一方、(CIN >> N)
    { 
        ためint型 i = 1 ; iが<= N iが++ 
        { 
            文字列PAI。
            CIN >> P [i]は.nameの>> PAI。
            以下のためのint型K = 0、J = 0 ; PAI [k]は、k個++ 
            { 
                場合(PAI [K] ==が' 0 '続けますもし(PAI [K]> = ' 2 ' && PAI [K] <= ' 9 ')p [i]は.A [J] = PAI [K] - 48 そう であれば(PAI [K] == ' A ')P [i]は.A [J] = 1 そう であれば(PAI [K] == ' J ')P [i]は.A [J] = 11 それ以外の 場合(PAI [K] == ' Q ')p [i]は.A [J] = 12 そう であれば(PAI [K] == ' K ')P [i]は.A [J] = 13 そう であれば(PAI [K] == ' 1 ')P [i]は.A [J] = 10 
                J ++ ; 
            } 
            ソート(P [i]の.A、P [i]は.A + 5 、CMP2)。
            ペア < 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。
        } 
        ソート(P + 1、P + N + 1 、CMP)。
        int型 iは= 1 ; iが<= N iが++ 
        COUT << P [I] .nameの<< ENDL。
    } 
    戻り 0 
}
コードの表示

 

 

あまりにもハードI

...

おすすめ

転載: www.cnblogs.com/myrtle/p/11519867.html