zoukankan      html  css  js  c++  java
  • 2019沈阳网选——模拟

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 
      4 struct Node{
      5     string name;
      6     int straight;
      7     pair<int,int> four;
      8     pair<int,int> full;
      9     pair<int,int> three;
     10     pair<pair<int,int>,int> twopair;
     11     pair<int,int> pairr;
     12     int handcard;
     13 }a[100005];
     14 
     15 bool cmp(Node a,Node b){
     16     if(a.straight == b.straight){
     17         if(a.four.first == b.four.first){
     18             if(a.four.second == b.four.second){
     19                 if(a.full.first == b.full.first){
     20                     if(a.full.second == b.full.second){
     21                         if(a.three.first == b.three.first){
     22                             if(a.three.second == b.three.second){
     23                                 if(a.twopair.first.first == b.twopair.first.first){
     24                                     if(a.twopair.first.second == b.twopair.first.second){
     25                                         if(a.twopair.second == b.twopair.second){
     26                                             if(a.pairr.first == b.pairr.first){
     27                                                 if(a.pairr.second == b.pairr.second){
     28                                                     if(a.handcard == b.handcard){
     29                                                         return a.name < b.name;
     30                                                     }
     31                                                     return a.handcard > b.handcard;
     32                                                 }
     33                                                 return a.pairr.second > b.pairr.second;
     34                                             }
     35                                             return a.pairr.first > b.pairr.first;
     36                                         }
     37                                         return a.twopair.second > b.twopair.second;
     38                                     }
     39                                     return a.twopair.first.second > b.twopair.first.second;
     40                                 }
     41                                 return a.twopair.first.first > b.twopair.first.first;
     42                             }
     43                             return a.three.second > b.three.second;
     44                         }
     45                         return a.three.first > b.three.first;
     46                     }
     47                     return a.full.second > b.full.second;
     48                 }
     49                 return a.full.first > b.full.first;
     50             }
     51             return a.four.second > b.four.second;
     52         }
     53         return a.four.first > b.four.first; ;
     54     }
     55     return a.straight > b.straight;
     56 }
     57 
     58 
     59 int n;
     60 int main()
     61 {
     62     while(~scanf("%d",&n)){
     63         for(int ii = 0;ii < n;ii ++){
     64             cin >> a[ii].name;
     65             a[ii].straight = -1;
     66             a[ii].four = make_pair(-1,-1);
     67             a[ii].full = make_pair(-1,-1);
     68             a[ii].three = make_pair(-1,-1);
     69             a[ii].twopair = make_pair(make_pair(-1,-1),-1);
     70             a[ii].pairr = make_pair(-1,-1);
     71             a[ii].handcard = -1;
     72             string p;cin >> p;
     73             int vis[17];
     74             memset(vis,0,sizeof(vis));
     75             for(int j = 0;j < p.size();j ++){
     76                 if(p[j] == '1'){vis[10] ++;}
     77                 if(p[j] == '0'){continue;}
     78                 if(p[j] == 'A'){vis[14] ++;vis[1] ++;}
     79                 if(p[j] == 'J'){vis[11] ++;}
     80                 if(p[j] == 'Q'){vis[12] ++;}
     81                 if(p[j] == 'K'){vis[13] ++;}
     82                 if(p[j] >= '2' && p[j] <= '9'){
     83                     vis[p[j] - '0'] ++;
     84                 }
     85             }
     86 
     87             for(int i = 1;i <= 10;i ++){///str
     88                 if(vis[i] && vis[i+1] && vis[i+2] && vis[i+3] && vis[i+4]){
     89                     a[ii].straight = i;break;
     90                 }
     91             }
     92             if(a[ii].straight != -1){continue;}
     93 
     94             for(int i = 1;i < 14;i ++){///four
     95                 if(vis[i] == 4){
     96                     a[ii].four.first = i;break;
     97                 }
     98             }
     99             for(int i = 1;i < 14;i ++){
    100                 if(vis[i] == 1){
    101                     a[ii].four.second = i;break;
    102                 }
    103             }
    104             if(a[ii].four.second != -1 && a[ii].four.first != -1){continue;}
    105             else{a[ii].four = make_pair(-1,-1);}
    106 
    107             for(int i = 1;i < 14;i ++){///full
    108                 if(vis[i] == 3){
    109                     a[ii].full.first = i;break;
    110                 }
    111             }
    112             for(int i = 1;i < 14;i ++){
    113                 if(vis[i] == 2){
    114                     a[ii].full.second = i;break;
    115                 }
    116             }
    117             if(a[ii].full.second == -1 || a[ii].full.first == -1){a[ii].full = make_pair(-1,-1);}
    118             else{continue;}
    119 
    120             for(int i = 1;i < 14;i ++){///three
    121                 if(vis[i] == 3){
    122                     a[ii].three.first = i;break;
    123                 }
    124             }
    125             int cnt = 0;
    126             for(int i = 1;i < 14;i ++){
    127                 if(vis[i] == 1){
    128                     cnt += i;
    129                 }
    130             }
    131             a[ii].three.second = cnt;
    132             if(a[ii].three.second != -1 && a[ii].three.first != -1){continue;}
    133             else{a[ii].three = make_pair(-1,-1);}
    134 
    135             cnt = 0;int sum = 0;
    136             for(int i = 13;i >= 1;i --){///two p
    137                 if(vis[i] == 2){
    138                     if(a[ii].twopair.first.first != -1){
    139                         cnt ++;a[ii].twopair.first.second = i;
    140                     }
    141                     else {a[ii].twopair.first.first = i;cnt ++;}
    142                 }
    143                 else if(vis[i] == 1){sum += i;}
    144             }
    145             if(cnt == 2){a[ii].twopair.second = sum;continue;}
    146             else{a[ii].twopair = make_pair(make_pair(-1,-1),-1);}
    147 
    148             sum = 0;
    149             for(int i = 13;i >= 1;i --){///pair
    150                 if(vis[i] == 2){
    151                     a[ii].pairr.first = i;
    152                 }
    153                 else if(vis[i] == 1){
    154                     sum += i;
    155                 }
    156             }
    157             if(a[ii].pairr.first != -1){a[ii].pairr.second = sum;continue;}
    158             else{a[ii].pairr = make_pair(-1,-1);}
    159 
    160             sum = 0;
    161             for(int i = 13;i >= 1;i --){///hand
    162                 if(vis[i] == 1){
    163                     sum += i;
    164                 }
    165             }
    166             a[ii].handcard = sum;
    167         }
    168         for(int i = 0;i < n;i ++){
    169             cout << a[i].name + " :" << endl;
    170             cout << "str : " << a[i].straight << endl;
    171             cout << "four : " << a[i].four.first << " " << a[i].four.second << endl;
    172             cout << "full : " << a[i].full.first << " " << a[i].full.second << endl;
    173             cout << "three : " << a[i].three.first << " " << a[i].three.second << endl;
    174             cout << "twopa : " << a[i].twopair.first.first << " " << a[i].twopair.first.second << " " << a[i].twopair.second << endl;
    175             cout << "pair : " << a[i].pairr.first << " " << a[i].pairr.second << endl;
    176             cout << "hand : " << a[i].handcard << endl;
    177         }
    178         sort(a,a + n,cmp);
    179         for(int i = 0;i < n;i ++){
    180             cout << a[i].name << endl;
    181         }
    182     }
    183     return 0;
    184 }
  • 相关阅读:
    用vue前后端分离项目开发记录
    使用 JavaScript 将网站后台的数据变化实时更新到前端
    怎么使用 JavaScript 将网站后台的数据变化实时更新到前端
    修改el-table滚动条样式
    修改浏览器滚动条样式
    查找和替换img src
    cookie添加删除修改
    如何处理CSS3属性前缀
    PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
    在 CSS 预编译器之后:PostCSS
  • 原文地址:https://www.cnblogs.com/love-fromAtoZ/p/11519576.html
Copyright © 2011-2022 走看看