题目描述

牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的A到K加上大小王的共54张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:3<4<5<6<7<8<9<10< J< Q< K< A< 2<小王<大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由n张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。

现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。请你帮他解决这个问题。

需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。

具体规则如下:

输入输出格式 输入格式:

第一行包含用空格隔开的2个正整数Tn,表示手牌的组数以及每组手牌的张数。

接下来T组数据,每组数据n行,每行一个非负整数对aibi表示一张牌,其中ai示牌的数码,bi表示牌的花色,中间用空格隔开。特别的,我们用1来表示数码A,11表示数码J,12表示数码Q,13表示数码K;黑桃、红心、梅花、方片分别用1-4来表示;小王的表示方法为01,大王的表示方法为02。

输出格式:

共T行,每行一个整数,表示打光第i手牌的最少次数。

可以把所有的出法分成两种,顺子和单独出的。
注意到出牌的顺序是没有关系的,所以可以人为规定顺序。
先暴力搜索顺子,然后可以对每种状态简单地计算出剩下的不出顺子的出法。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int oo=0x3f3f3f3f;
int num[20],cnt[5],n,ans;
void fin(int now)
{memset(cnt,0,sizeof(cnt));for (int i=3;i<=16;i++)if (num[i]){if (num[i]<3) cnt[2]++;else cnt[num[i]]++;}ans=min(ans,now+cnt[3]+cnt[4]+max(cnt[2]-cnt[3]-cnt[4]*2,0));
}
void dfs(int now)
{fin(now);for (register int i=3;i<=14;i++)if (num[i])for (register int j=i+1;j<=14&&num[j];j++)if (j-i+1>=5){for (register int k=i;k<=j;k++)num[k]--;dfs(now+1);for (register int k=i;k<=j;k++)num[k]++;}for (register int i=3;i<=14;i++)if (num[i]>=2)for (register int j=i+1;j<=14&&num[j]>=2;j++)if (j-i+1>=3){for (register int k=i;k<=j;k++)num[k]-=2;dfs(now+1);for (register int k=i;k<=j;k++)num[k]+=2;}for (register int i=3;i<=14;i++)if (num[i]>=3)for (register int j=i+1;j<=14&&num[j]>=3;j++){for (register int k=i;k<=j;k++)num[k]-=3;dfs(now+1);for (register int k=i;k<=j;k++)num[k]+=3;}
}
int main()
{int i,j,k,x,y,z,T;scanf("%d%d",&T,&n);while (T--){memset(num,0,sizeof(num));for (i=1;i<=n;i++){scanf("%d%d",&x,&y);if (x==1) num[14]++;if (x==2) num[15]++;if (x==0) num[16]++;if (x>=3) num[x]++;}ans=oo;dfs(0);printf("%d\n",ans);}
}

【NOIP2015】洛谷2668 斗地主相关推荐

  1. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头

    [题目链接] ybt 1890:[15NOIP提高组]跳石头 洛谷 P2678 [NOIP2015 提高组] 跳石头 ybt 1247:河中跳房子 OpenJudge NOI 1.11 10:河中跳房 ...

  2. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  3. 信息学奥赛一本通 1100:金币 | 1969:【15NOIP普及组】金币 | OpenJudge NOI 1.5 45 | 洛谷 P2669 [NOIP2015 普及组] 金币

    [题目链接] ybt 1100:金币 ybt 1969:[15NOIP普及组]金币 OpenJudge NOI 1.5 45:金币 洛谷 P2669 [NOIP2015 普及组] 金币 [题目考点] ...

  4. 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储

    P1428 小鱼比可爱 小鱼比可爱 - 洛谷 P1427 小鱼的数字游戏 小鱼的数字游戏 - 洛谷 P5727 [深基5.例3]冰雹猜想 [深基5.例3]冰雹猜想 - 洛谷 P5727 [深基5.例3 ...

  5. 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)

    P5718 [深基4.例2]找最小值 [深基4.例2]找最小值 - 洛谷 P5718 [深基4.例2]找最小值(python3实现)-2022.02.01 P5718 [深基4.例2]找最小值(pyt ...

  6. 【NOIP2015 DAY1 T3 】斗地主(landlords)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  7. 洛谷P3853 [TJOI2007]路标设置

    P3853 [TJOI2007]路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题与 洛谷P2678 [NOIP2015 提高组] 跳石头 和 洛谷P1182 数列分段 ...

  8. 洛谷循环结构(Freshman锻炼牛犇勿喷)

    第一题 找最小值 题目描述 给出 n(n\le100)n(n≤100) 和 nn 个整数 a_i(0\le a_i \le 1000)ai​(0≤ai​≤1000),求这 nn 个整数中最小值是什么. ...

  9. 【洛谷P2615】神奇的幻方

    作者:letianJOE 题目链接 目录 题目描述 输入格式 输出格式 样例#1 样例输入 #1 样例输出 #1 样例#2 样例输入 #2 样例输出 #2(需要用宽屏来看) 提示 题目思路 样例模拟 ...

最新文章

  1. [iOS]调和 pop 手势导致 AVPlayer 播放卡顿
  2. easyui相关解释
  3. centos开启防火墙指定端口
  4. 编程之美-数组循环移位
  5. 信安 | 网上吵个架都能被封号?是“黑科技”还是“黑产”?
  6. IBM-X3650 6核处理器安装sql server 2005报错解决方法
  7. 关于ByteBuffer使用解释
  8. Redis之渐进式rehash
  9. Docker学习总结(31)——使用Maven插件构建docker镜像
  10. 第九章 搭建Hadoop 2.2.0版本HDFS的HA配置
  11. ​17 款程序员神级 Chrome 插件,爱了爱了!
  12. 程序阅读_全面详解LTE:MATLAB建模仿真与实现_自学笔记(1)调制与编码_程序阅读
  13. 获取客户端真实 IP
  14. 计算机网络ospf实验报告,计算机网络实验报告12_ospf实验
  15. 李嘉诚的人生感悟(ZT)
  16. QT使用QMovie播放Gif动画
  17. 【180928】中国象棋游戏源码
  18. Atollic TrueSTDIO下修改STM32L475VE的变量分配地址
  19. windows安装rabbitmq详细实例
  20. 【多会议推荐】计算机主题,多高校单位主办,SCI会议征稿!

热门文章

  1. 杰理之MIDI 解码方式共有 4 种,分别是【篇】
  2. 面板数据、工具变量选择和Hausman检验的若干问题
  3. [面试] 面试官: 你还有什么想问我的?
  4. Android back按键基础开发
  5. 企业视频远程办公会议通话系统EasyRTC在Windows2012部署运行出现“计算机中丢失VCRUNTIME140.dll”如何解决?
  6. 直播系统源码搭建、手机直播源码APP平台开发制作
  7. 七天免登陆有效期 java_JWT过期刷新问题,实现十五天免登陆
  8. HDU 1567(2006)
  9. php reactphp wss_swoole 使用websocket建立wss连接
  10. 2023山东健博会China-DJK济南国际大健康产业博览会