P2540 斗地主增强版
参考大佬题解
思路:顺子暴力搜,剩下的牌我不会贪心所以用记忆化搜索(或者dp);
注意:双王不能当对,二不算顺子
代码
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std; #define res register int
#define inf 0x3f3f3f3f
inline int read() {
int x(),f(); char ch;
while(!isdigit(ch=getchar())) if(ch=='-') f=-;
while(isdigit(ch)) x=(x<<)+(x<<)+ch-'',ch=getchar();
return x*f;
} int n,T,ans;
int a[];
int f[][][][];
//单个牌的数目,双,三,四,王
int c[]; template <typename T>
inline T my_max(T a,T b) {return a<b?a:b;}
template <typename T>
inline T my_min(T a,T b) {return a<b?a:b;} int calc(int a,int b,int c,int d)
{
if(a< || b< || c< || d<) return inf;
if(!c && !d) return a+b;
if(~f[a][b][c][d]) return f[a][b][c][d];
//拆四
int tmp=my_min(calc(a+,b,c+,d-),calc(a+,b+,c,d-));
//拆三
tmp=my_min(tmp,my_min(calc(a+,b+,c-,d),calc(a+,b,c-,d)));
//四带一
tmp=my_min(tmp,my_min(calc(a-,b,c,d-),calc(a,b-,c,d-))+);
//四带二
tmp=my_min(tmp,my_min(calc(a,b-,c,d-),calc(a,b,c,d-))+);
//三带一
tmp=my_min(tmp,my_min(calc(a-,b,c-,d),calc(a,b-,c-,d))+);
return f[a][b][c][d]=tmp;
}
void dfs(int x)
{
if(x>=ans) return ;
bool f=true;
int cnt;
//暴力出顺子
for(res k= ; k<= ; k++)
for(res i= ; i<= ; i++)
{
f=true;
if(k==) cnt=;
else if(k==) cnt=;
else cnt=;
while(f&&i+cnt-<=)
{
for(res j= ; j<=cnt ; j++)
if(a[i+j-]<k) {
f=false; break;
}
if(!f) continue;
for(res j= ; j<=cnt ; j++)
a[i+j-]-=k;
dfs(x+);
for(res j= ; j<=cnt ; j++)
a[i+j-]+=k;
cnt++;//看有没有更长的顺子
}
}
c[]=c[]=c[]=c[]=;
for(res i= ; i<= ; i++) c[a[i]]++;
if(a[]==) ans=my_min(ans,x+calc(c[],c[],c[],c[])+);
//王炸
ans=my_min(ans,x+calc(a[]+c[],c[],c[],c[]));
} int main()
{
T=read(); n=read();
memset(f,-,sizeof(f));
while(T--)
{
memset(a,,sizeof(a));
ans=n;
for(res i= ; i<=n ; i++)
{
int x=read(),y=read();
if(x==) a[]++;
else if(x>=) a[x]++;
else if(x==) a[]++;
else if(x==) a[]++;
}
dfs();
printf("%d\n",ans);
} return ;
}
P2540 斗地主增强版的更多相关文章
- Luogu 2540 斗地主增强版(搜索,动态规划)
Luogu 2540 斗地主增强版(搜索,动态规划) Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游 ...
- 洛谷 题解 P2540 【斗地主增强版】
[分析] 暴力搜顺子,贪心出散牌 为什么顺子要暴力? 玩过斗地主的都知道,并不是出越长的顺子越好,如果你有一组手牌,3,4,5,6,7,6,7,8,9,10,你一下把最长的出了去,你会单两张牌,不如出 ...
- [Luogu2540][NOIP2016]斗地主增强版(搜索+DP)
增强版就是原版中两鬼不算对子的版本. 先爆搜出完所有对子,剩下的牌DP处理. 考虑每个数码的拆牌情况,最多可能被拆成5种情况:1+1+1+1,1+1+2,1+3,2+2,4.故DP状态数最多为5^13 ...
- luogu2540 斗地主增强版
题目大意 给你一副手牌,没有飞机带翅膀,按斗地主的规则,求将所有牌打出的最少次数. 题解 先不考虑顺子 我们已经知道花色对牌没有影响,那么如果不考虑顺子,每个牌具体是什么数字我们也用不着知道,我们关心 ...
- Luogu2540 斗地主增强版(搜索+动态规划)
单纯的暴搜似乎还是很好写的,然而过不了.出完顺子之后答案是可以dp出来的,于是大力搜然后大力dp就好了. dp时强行讨论完了几乎所有拆牌情况,理性愉悦一发. #include<iostream& ...
- 【NOIP2015】斗地主 D1 T3 及 增强版 (送命题)
恶心送命模拟题 暴搜顺子,DP预处理剩下的. 由于官方数据太水,很多情况没有讨论的都能过普通版本,想要测试自己代码正确性的同学们可以交交这道题,有很多dalao给出了hack数据 : Luogu P2 ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- 最新GHOST XP系统下载旗舰增强版 V2016年
系统来自:系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年3月 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插 ...
- 最新深度技术GHOST XP系统旗舰增强版 V2016年
来自系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插件,增强浏 ...
随机推荐
- weblogic如何部署web应用
weblogic如何部署web应用 程序员的基础教程:菜鸟程序员
- 线上应用故障排查:高CPU占用
转自:hankchen,http://www.blogjava.net/hankchen 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 以我们最近出现的一个实际故障 ...
- 搭建自己的MQTT服务器
搭建自己的MQTT服务器 物联网电子世界 百家号08-2903:04 MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理.有两种方法使用MQTT服务,一是租用现成的MQTT服务 ...
- java网站如何集成facebook第三方登录
第一次接触Facebook第三方登录,可能有些地方做的并不全面,只是尝试着做了一个小demo,因为国内接入Facebook的项目并不多,并且多数都是Android或iOS的实现,所以资料也特别少,在此 ...
- 斐波那契数列—java实现
最近在面试的时候被问到了斐波那契数列,而且有不同的实现方式,就在这里记录一下. 定义 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
- 【转载】mysql常用函数汇总
转载地址:http://www.jb51.net/article/40179.htm 一.数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制 ...
- php 用csv文件导出大量数据初方案
背景:接手的项目中支持导出一批数据,全数量在50W左右.在接手的时候看代码是直接一次查询MySQL获得数据,然后用header函数直接写入csv,用户开始导出则自动下载.但是,在全导出的时候,功能出现 ...
- redis整理の走进redis世界
声明:原文摘自http://weibo.com/u/2446082491,谢谢他的分享! 在当前大型互联网应用以及提供云计算服务的时候,怎样保证系统在海量数据环境下的高性 能.高可靠性.高扩展性.高可 ...
- 【转载】UML类图几种关系的总结
因为有的时候很久不弄UML图,老是忘记几个常见的连接线的意思,这篇完全说转载:UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Real ...
- HBase入门篇
目录: 1-HBase的安装 2-Java操作HBase例子 3-HBase简单的优化技巧 4–存储 5(集群) -压力分载与失效转发 6 -白话MySQL(RDBMS)与HBase之间 7 -安全& ...