P2540 斗地主增强版
P2540斗地主增强版
参考大佬题解
思路:顺子暴力搜,剩下的牌我不会贪心所以用记忆化搜索(或者dp);
注意:双王不能当对,二不算顺子
代码
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cctype> 5 #include <algorithm> 6 using namespace std; 7 8 #define res register int 9 #define inf 0x3f3f3f3f 10 inline int read() { 11 int x(0),f(1); char ch; 12 while(!isdigit(ch=getchar())) if(ch=='-') f=-1; 13 while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar(); 14 return x*f; 15 } 16 17 int n,T,ans; 18 int a[20]; 19 int f[25][25][25][25]; 20 //单个牌的数目,双,三,四,王 21 int c[5]; 22 23 template <typename T> 24 inline T my_max(T a,T b) {return a<b?a:b;} 25 template <typename T> 26 inline T my_min(T a,T b) {return a<b?a:b;} 27 28 int calc(int a,int b,int c,int d) 29 { 30 if(a<0 || b<0 || c<0 || d<0) return inf; 31 if(!c && !d) return a+b; 32 if(~f[a][b][c][d]) return f[a][b][c][d]; 33 //拆四 34 int tmp=my_min(calc(a+1,b,c+1,d-1),calc(a+2,b+2,c,d-1)); 35 //拆三 36 tmp=my_min(tmp,my_min(calc(a+1,b+1,c-1,d),calc(a+3,b,c-1,d))); 37 //四带一 38 tmp=my_min(tmp,my_min(calc(a-2,b,c,d-1),calc(a,b-1,c,d-1))+1); 39 //四带二 40 tmp=my_min(tmp,my_min(calc(a,b-2,c,d-1),calc(a,b,c,d-2))+1); 41 //三带一 42 tmp=my_min(tmp,my_min(calc(a-1,b,c-1,d),calc(a,b-1,c-1,d))+1); 43 return f[a][b][c][d]=tmp; 44 } 45 void dfs(int x) 46 { 47 if(x>=ans) return ; 48 bool f=true; 49 int cnt; 50 //暴力出顺子 51 for(res k=1 ; k<=3 ; k++) 52 for(res i=3 ; i<=14 ; i++) 53 { 54 f=true; 55 if(k==1) cnt=5; 56 else if(k==2) cnt=3; 57 else cnt=2; 58 while(f&&i+cnt-1<=14) 59 { 60 for(res j=1 ; j<=cnt ; j++) 61 if(a[i+j-1]<k) { 62 f=false; break; 63 } 64 if(!f) continue; 65 for(res j=1 ; j<=cnt ; j++) 66 a[i+j-1]-=k; 67 dfs(x+1); 68 for(res j=1 ; j<=cnt ; j++) 69 a[i+j-1]+=k; 70 cnt++;//看有没有更长的顺子 71 } 72 } 73 c[1]=c[2]=c[3]=c[4]=0; 74 for(res i=3 ; i<=15 ; i++) c[a[i]]++; 75 if(a[0]==2) ans=my_min(ans,x+calc(c[1],c[2],c[3],c[4])+1); 76 //王炸 77 ans=my_min(ans,x+calc(a[0]+c[1],c[2],c[3],c[4])); 78 } 79 80 int main() 81 { 82 T=read(); n=read(); 83 memset(f,-1,sizeof(f)); 84 while(T--) 85 { 86 memset(a,0,sizeof(a)); 87 ans=n; 88 for(res i=1 ; i<=n ; i++) 89 { 90 int x=read(),y=read(); 91 if(x==0) a[0]++; 92 else if(x>=3) a[x]++; 93 else if(x==1) a[14]++; 94 else if(x==2) a[15]++; 95 } 96 dfs(0); 97 printf("%d\n",ans); 98 } 99 100 return 0; 101 }
View Code
转载于:https://www.cnblogs.com/wmq12138/p/10349618.html
P2540 斗地主增强版相关推荐
- 将表里的数据批量生成INSERT语句的存储过程 增强版
原文:将表里的数据批量生成INSERT语句的存储过程 增强版 将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的 ...
- MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...
- Facebook增强版LASER开源:零样本迁移学习,支持93种语言
来源| Facebook AI 研究院 译者 | Linstancy 责编 | 琥珀 出品 | AI 科技大本营(ID:rgznai100) [导语]为了加速自然语言处理 (NLP) 在更多语言上实现 ...
- P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐
校门三部曲,总算完结了!完结散花! 难度呈阶梯状,都可以用线段树解决. 第一部 P1047 校门外的树(线段树优化)难度⭐⭐ 第二部 P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐ 第 ...
- QUARK的增强版C-QUARK问世,有效提升蛋白质结构从头预测精度
2021年8月18日,密西根大学张阳教授团队在Nature Communications上发表论文"Improving fragment-based ab initio protein st ...
- 小程序 a标签_微慕WordPress小程序增强版V2.0新版上线
2020年7月10日,我进行了一场微信小程序的直播,直播主题:微慕小程序增强版v2.0版新功能说明, 在直播里对微慕增强版v2.0版全面阐述了新版本增加的功能. 微慕小程序增强版定位是使用wordpr ...
- 字符串位加密 php,PHP字符串加密增强版
这篇文章介绍的内容是关于PHP字符串加密增强版,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下为了增加数据的安全性 避免相同字符多次加密得到结果是一致的 可以设置密文有效期 下面列举了一 ...
- 将表里的数据批量生成INSERT语句的存储过程 继续增强版
文章继续 桦仔兄的文章 将表里的数据批量生成INSERT语句的存储过程 增强版 继续增强... 本来打算将该内容回复于桦仔兄的文章的下面的,但是不知为何博客园就是不让提交!.... 所以在这里贴出来吧 ...
- 阿里云云盾-风险识别-增强版模式发布
信息摘要: 注册风险识别与营销风险识别新增"增强版"模式,引入设备风险SDK能力,基于端检测及设备指纹,强力提升移动端风险防控能力. 适用客户: 有移动APP类企业 版本/规格功能 ...
- 服务器安全狗V4.1增强版 新增修复多项功能
2019独角兽企业重金招聘Python工程师标准>>> 服务器安全狗V4.1增强版发布咯,用户朋友们可直接在线升级或到官网下载安装使用. 2014年4月1日发布,服务狗主要针对以下几 ...
最新文章
- R构建加权最小二乘回归模型(Weighted Least Squares Regression)
- python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)...
- eclipse 和myEclipse 项目导入
- scorecardpy库的使用简介
- OpenCV基本步骤(初步学习)
- 【AI不惑境】学习率和batchsize如何影响模型的性能?
- 智能文案app_智能营销,用实力说话!按效果付费!
- xml 和android脚本之家,AndroidManifest.xml配置文件解析_Android_脚本之家
- Flutter异步编程async与await的基本使用
- WLC-生成CSR操作
- jquery 如何控制滚动条每次向下滚动300px
- win10如何截屏_6个Win10系统使用小技巧,对你一定有用!
- 考研政治——马克思主义唯物论之物质观
- POJ:3276-Face The Right Way(线性反转)
- 当租房成为一种生活方式
- 如何构建VoIP来是实现电话诈骗之——Asterisk的设置
- 一个又离不开的软件:图形化远程控制APP向日葵
- bp神经网络原理 实现过程,bp神经网络的应用案例
- 【云原生】Docker Compose 构建 Jenkins
- 桥牌新手应该看的几本书
热门文章
- 理解 Delphi 的类(十一) - 深入类中的方法[12] - 消息方法
- POJ 1398 Complete the sequence! ★ (差分)
- DataMining with Sql 2005
- JavaScript学习笔记(八)
- CCF——游戏(2017-12)
- python自动化六--操作mysql,redis,发送邮件,EXCEL,MD5加密
- iOS开发之单元测试
- Phoenix Tips (13) 统计收集
- Android中为APP创建快捷方式的原理(自己的理解)
- 在Eclipse上搭建Cocos2d-x的Android开发环境