2019沈阳icpc网络赛H德州扑克
时间:2019-09-14
本文章向大家介绍2019沈阳icpc网络赛H德州扑克,主要包括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; }
我太难了
...
原文地址:https://www.cnblogs.com/myrtle/p/11519867.html
- 完全掌握Android Data Binding
- eclipse+webservice开发实例
- tomcat 用AXIS2发布WebService 网站的方法
- JSP 中EL表达式用法详解
- CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8
- Hibernate详细教程
- TensorFlow中的多线程
- nginx 域名绑定 域名, nginx 域名绑定 端口
- Centos下Yum安装PHP5.5,5.6,7.0
- 请注意,我们要谈谈神经网络的注意机制和使用方法
- Configure Apache Virtual Hosts - CentOS 7
- centos7查看端口命令
- 为什么算法容易忘记之快速排序
- 为什么算法容易忘记之插入排序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现接近传感器
- PHP 模拟登陆功能实例详解
- PHP判断一个变量是否为整数、正整数的方法示例
- android实现打地鼠游戏
- Yii框架连表查询操作示例
- Android studio listview实现列表数据显示 数据循环显示效果
- 关于Curl在Swoole协程中的解决方案详析
- Flutter随机迷宫生成和解迷宫小游戏功能的源码
- Yii框架实现对数据库的CURD操作示例
- Laravel5.4框架中视图共享数据的方法详解
- Android视频悬浮窗口实现的示例代码
- 使用Laravel中的查询构造器实现增删改查功能
- Flutter 自定义Drawer 滑出位置的大小实例代码详解
- laravel5.1框架基础之路由详解
- flutter 自定义card阴影效果及card使用