毫无意义的一道题。

用pai[i]表示某种点数的牌的剩余量,used[i]表示单,对,三,四的出牌数,大力分类讨论,大力dfs即可。。。真奇葩。。。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int T,n,ans,pai[20],used[6];
void dfs(int kth,int v) {
if(kth>14) {
int nxt=v,a=used[1],b=used[2],c=used[3],d=used[4];
if(d>=(a>>1)) nxt-=a-(a&1),d-=a>>1,a&=1;
else nxt-=d<<1,a-=d<<1,d=0;
if(d>=(b>>1)) nxt-=b-(b&1),d-=b>>1,b&=1;
else nxt-=d<<1,b-=d<<1,d=0;
if(d>=b) nxt-=b,d-=b,b=0;
if(c>=a) nxt-=a,c-=a,a=0;
else nxt-=c,a-=c,c=0;
if(c>=b) nxt-=b,c-=b,b=0;
else nxt-=c,b-=c,c=0;
ans=min(ans,nxt);return;
}
if(!pai[kth]) {dfs(kth+1,v);return;}
int now=-1;
if(kth>=3) {
for(int i=kth;i<=14;i++) {
if(pai[i]<3) break;
now=i;pai[i]-=3;
if(i-kth+1>=2) dfs(kth,v+1);
}
for(int i=kth;i<=now;i++) pai[i]+=3;
now=-1;
for(int i=kth;i<=14;i++) {
if(pai[i]<2) break;
now=i;pai[i]-=2;
if(i-kth+1>=3) dfs(kth,v+1);
}
for(int i=kth;i<=now;i++) pai[i]+=2;
now=-1;
for(int i=kth;i<=14;i++) {
if(!pai[i]) break;
now=i;
pai[i]--;
if(i-kth+1>=5) dfs(kth,v+1);
}
for(int i=kth;i<=now;i++) pai[i]++;
}
if(pai[kth]==4) {
pai[kth]-=4;
used[4]++;dfs(kth+1,v+1);used[4]--;
used[3]++,used[1]++,dfs(kth+1,v+2);used[3]--,used[1]--;
used[2]+=2;dfs(kth+1,v+2);used[2]-=2;
pai[kth]+=4;
}
else if(pai[kth]==3) {
pai[kth]-=3;
used[3]++;dfs(kth+1,v+1);used[3]--;
used[2]++,used[1]++,dfs(kth+1,v+2),used[2]--,used[1]--;
pai[kth]+=3;
}
else if(pai[kth]==2) {pai[kth]-=2;used[2]++;dfs(kth+1,v+1);used[2]--;pai[kth]+=2;}
else if(pai[kth]==1) {pai[kth]--;used[1]++;dfs(kth+1,v+1);used[1]--;pai[kth]++;}
}
int main() {
scanf("%d%d",&T,&n);
while(T--) {
ans=9999999;
memset(pai,0,sizeof pai);memset(used,0,sizeof used);
for(int i=1,a,b;i<=n;i++) {scanf("%d%d",&a,&b);if(a==0) pai[b-1]++;else if(a==1) pai[14]++;else pai[a]++;}
if(pai[0]&&pai[1]) pai[0]--,pai[1]--,dfs(2,1),pai[0]++,pai[1]++,dfs(0,0);
else dfs(0,0);
printf("%d\n",ans);
}
}

[NOIPlus]斗地主的更多相关文章

  1. NOIP2015斗地主[DFS 贪心]

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

  2. Android斗地主棋牌游戏牌桌实现源码下载

    本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.biso ...

  3. Android开源益智游戏“斗地主”单机版源代码

     Android开源益智游戏"斗地主"单机版源代码 这是一个网上流传的Android开源斗地主单机版项目,运行结果如图: 项目源代码导入到Eclipse后可直接运行,我把ecl ...

  4. [NOIP2015] 斗地主(搜索)

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

  5. Java基础之如何解决斗地主问题

        难的是逻辑的分析,把逻辑转化成代码是一种能力,这种能力需要多练习总结.     多多指教,共同进步. 问题: 要求实现斗地主游戏发牌过程,打印三个玩家的牌和底牌.在不看底牌的情况下,统计出三个 ...

  6. Java写的斗地主游戏源码

    源码下载在最后 我们的前年的课设要求做一个斗地主程序,当时正在愁如何做界面,当时刚好在学习C#,于是就用C#完成了这个程序.一方面,当时我C#功底还很差(其实现在也不怎么样),很多地方用了“笨办法”, ...

  7. 斗地主(Noip2015Day1T3)

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

  8. BZOJ 4325: NOIP2015 斗地主

    4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 684  Solved: 456[Submit][Status] ...

  9. UOJ147 斗地主

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

随机推荐

  1. [bzoj 2726] 任务安排 (斜率优化 线性dp)

    3月14日第三题!!!(虽然是15号发的qwq) Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3-N.这N个任务被分成若干批 ...

  2. python第二周:数据类型、列表、字典

    1.模块初识: sys模块: import sys print(sys.path) #path打印环境变量--> ['F:\\python学习\\projects\\s14\\day2', 'F ...

  3. 《代码敲不队》第八次团队作业:Alpha冲刺 第三天

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 团队项目github仓库地址链接 GitH ...

  4. SSH框架整合截图(二)

    客户拜访管理 1 什么是客户拜访 (1)客户:与公司有业务往来的 (2)用户:可以使用系统的人 2 用户和客户关系 (1)用户和客户之间是拜访的关系 (2)用户 和 客户 是 多对多关系 ** 一个用 ...

  5. poj 3356

    Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...

  6. Window7幻灯片字体显示混乱,难道真的是病毒么

    这个问题有几天了.就是在其它人的PowerPoint2010做的ppt文件.发到这台有问题的电脑上(PowerPoint2007)就会显示全然不一样.例如以下所看到的. watermark/2/tex ...

  7. hdu 4888 2014多校第三场1002 Redraw Beautiful Drawings 网络流

    思路:一開始以为是高斯消元什么的.想让队友搞,结果队友说不好搞,可能是网络流.我恍然,思路立刻就有了. 我们建一个二部图.左边是行,右边是列,建个源点与行建边,容量是该行的和.列与新建的汇点建边.容量 ...

  8. windows、linux劫持技术

    windows系统以下能够利用detours劫持 realse  模式劫持,调试的程序不能够 函数劫持能够实现的效果. 函数的劫持原理 我们怎样实现-detours detours是微软亚洲研究院出品 ...

  9. Linux环境thinkphp配置以及数据源驱动改动

    项目中须要用到thinkphp,以下简称tp. linux版本号:64位CentOS 6.4 Nginx版本号:nginx1.8.0 php版本号:php5.5.28 thinkphp版:3.2.3 ...

  10. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires

    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires ...