题目链接:https://nanti.jisuanke.com/t/41408

题目意思很简单,就是个模拟过程。


 #include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <map>
#define rep(i,j,k) for(int i = (j); i <= (k); ++i)
#define per(i,j,k) for(int i = (j); i >= (k); --i)
#define rep__(i,j,k) for(int i = (j); i < (k); ++i)
#define per__(i,j,k) for(int i = (j); i > (k); --i)
#define inf 1e9
using namespace std;
typedef long long LL;
const int N = (int)1e5 + ; // map<char,int > mp;
struct node{
char name[];
int card[];
bool pair;
int rank_1,rank_2;
int sum; void fun(char* tmp){
rep__(i,,) card[i] = ;
rank_1 = rank_2 = ;
pair = false;
sum = ;
int i = ;
while(tmp[i] != '\0'){
if(tmp[i] == ''){ //
++card[];
i += ;
sum += ;//得出卡的总价值
}
else{
int k = ;
if(tmp[i] >= '' && tmp[i] <= '') k = tmp[i] - '' + ;
else if(tmp[i] == 'A') k = ;
else if(tmp[i] == 'J') k = ;
else if(tmp[i] == 'Q') k = ;
else if(tmp[i] == 'K') k = ;
++card[k];
++i;
sum += k;//得出卡的总价值
}
}
} void rank(){
bool com = true;//没有任何的等级
//最大的顺子
if(card[] && card[] && card[] && card[] && card[]){
rank_1 = ;
com = false;
}
else {
rep(i,,){
if(card[i] == ) rank_1 = ,sum += (-*i + i*),com = false;
else if(card[i] == ){
//rank_1 == 0 ? rank_1 = 7 : rank_1 = 7,rank_2 = 1;
if(rank_1 == ) rank_1 = ;
else rank_1 = ,rank_2 = ;
sum += (-*i + i*);
com = false;
}
else if(card[i] == ){
if(!pair){
rank_1 == ? rank_1 = : rank_2 = ;
sum += (-*i + i*);
pair = ;
com = false;
}
else{
rank_2 = ;
sum += (-*i + i*);
}
}
}
}
//都不相同
if(com){
rep(i,,){
if(i + > ) break;
if(card[i] && card[i + ] && card[i + ] && card[i + ] && card[i + ]){
rank_1 = ;
break;
}
}
}
} bool friend operator<(const node& a,const node& b){
if(a.rank_1 != b.rank_1) return a.rank_1 > b.rank_1;
else{
if(a.rank_2 != b.rank_2) return a.rank_2 > b.rank_2;
else{
if(a.sum != b.sum) return a.sum > b.sum;
else return strcmp(a.name,b.name) < ? : ;
}
}
}
}stu[N]; int main(){ ios::sync_with_stdio(false);
cin.tie();
// mp['A'] = 1; mp['2'] = 2; mp['3'] = 3; mp['4'] = 4; mp['5'] = 5; mp['6'] = 6;
// mp['7'] = 7; mp['8'] = 8; mp['9'] = 9; mp['J'] = 11; mp['Q'] = 12; mp['K'] = 13;
int n;
char tmp[];
while(cin >> n){ rep(i,,n){
cin >> stu[i].name >> tmp;
stu[i].fun(tmp);//装换成卡片
stu[i].rank();//等级
} sort(stu + ,stu + + n); rep(i,,n) cout << stu[i].name << endl;
} // getchar();getchar();
return ;
}
// << ' ' << stu[i].rank_1 << ' ' << stu[i].rank_2 << ' ' << stu[i].sum /* 7
AQ A2345
AW 58976
AS 5A397
AP AAA99
AL 222AA
AG AA229
AU 1010A23
*/

最新文章

  1. weak和nonull
  2. Angular2 Http
  3. Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  4. 打开Genesis设置单位为mm
  5. Java for LeetCode 188 Best Time to Buy and Sell Stock IV【HARD】
  6. [Django] Pinax 项目下APP的 安装与使用
  7. Spark大型项目实战:电商用户行为分析大数据平台
  8. IOS 后台执行 播放音乐
  9. OpenGL中shader读取实现
  10. HNOI 2012 永无乡
  11. combination sum、permutation、subset(组合和、全排列、子集)
  12. 180815 Python自学成才001
  13. Unable to start Ocelot because either a ReRoute or GlobalConfiguration
  14. Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页及获取JS返回值
  15. Maven 包含资源文件
  16. BZOJ.1001.[BeiJing2006]狼抓兔子(最小割ISAP)
  17. Fragment 生命周期 全局变量的声明位置
  18. AVAudioPlayer简易封装
  19. hdu 4576 (简单dp+滚动数组)
  20. ACM1019:Least Common Multiple

热门文章

  1. Scrapy框架详解
  2. Xamarin.Forms移动开发系列3:项目剖析
  3. 测开面试 | Python语言常见问题
  4. JOI2013-2019题解
  5. c++基础第一篇
  6. [LeetCode] 287. Find the Duplicate Number 寻找重复数
  7. Codeforces 126B Password(Z算法)
  8. C# 方法递归
  9. ABP vNext中使用开源日志面板 LogDashboard
  10. orale数据库.实例.表空间.用户.表