毫无意义的一道题。

用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. Swagger在 NETcore 中的使用

    请参考 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=asp ...

  2. HDU5979 Convex

    /* HDU5979 Convex http://acm.hdu.edu.cn/showproblem.php?pid=5979 计算几何 三角形面积公式 * * */ #include <cs ...

  3. NetOps Defined

    https://www.logzilla.net/2017/06/20/the-network-operations-top-5.html

  4. Java压缩和解压缩文件工具

    Java压缩和解压缩文件工具 学习了: https://www.oschina.net/code/snippet_1021818_48130 http://blog.csdn.net/gaowen_h ...

  5. [ES6] Proxy & Reflect

    Proxy and Reflect API works nicely together. About how to use Proxy, check this post. Let's see abou ...

  6. __FUNCTION__, __LINE__ 有助于debug的宏定义

    __FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find d ...

  7. 低调、奢华、有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI

    基于FacebookPresto+Cassandra的敏捷式大数据 文件夹 1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 2 2.1 2.2 2.3 2.4 2.5 2.6 3 ...

  8. 利用反射api查找一个类的具体信息

    讲到这个实例,首先介绍下本人,我是一个php程序猿.从事drupal开发2年多.能够说从实习開始就接触这个,至今没有换过.drupal给我的感觉是俩字"强大",今天写一个views ...

  9. Android nomedia 避免图片等资源泄露在系统图库其中

    总结 Android nomedia 避免文件泄露在系统图库和系统铃声中 在应用开发中 项目的图片总是被系统的图库收录了 避免图片被系统图库收录的发现有2个方法 第一种针对图片 将 .png为后缀的图 ...

  10. 在linux環境下安裝jprofiler_linux_8_0_2.sh

    1.安装jprofiler_linux_8_0_2.sh chmod+x jprofiler_linux_8_0_2.sh ./jprofiler_linux_8_0_2.sh –c 安装过程略..差 ...