Sol

暴力搜索...不用搜1,2张的情况,直接统计出来就可以了.

还有处理一下2和大王小王的位置,扔到最后面或者最前面就可以了.

搜索就搜 3+3,2+2+2,1+1+1+1+1 这三个就可以了.

Code

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; const int N = 25; int T,n,ans;
int t[]={13,11,12,0,1,2,3,4,5,6,7,8,9,10};
int a[N]; inline int in(int x=0,char ch=getchar()){ while(ch>'9'||ch<'0') ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x; } void DFS(int d){
if(d>ans) return;
int c[5]={0,0,0,0,0};
for(int i=0;i<=13;i++) if(a[i]==1) c[1]++;
for(int i=0;i<=13;i++) if(a[i]==2) c[2]++;
for(int i=0;i<=13;i++) if(a[i]==3){
c[3]++;
if(c[2]>=1) c[2]--;else if(c[1]>=1) c[1]--;
}
for(int i=0;i<=13;i++) if(a[i]==4){
c[4]++;
if(c[1]>=2) c[1]-=2;else if(c[2]>=2) c[2]-=2;else if(c[2]>=1) c[2]--;
} ans=min(ans,d+c[1]+c[2]+c[3]+c[4]); //3+3
for(int i=0,j;i<=10;i++){
for(j=i;j<=11;j++){
a[j]-=3;
if(a[j]<0) break;
if(j-i+1>=2) DFS(d+1);
}if(j==12) j--;
while(j>=i) a[j--]+=3;
}
//2+2+2
for(int i=0,j;i<=9;i++){
for(j=i;j<=11;j++){
a[j]-=2;
if(a[j]<0) break;
if(j-i+1>=3) DFS(d+1);
}if(j==12) j--;
while(j>=i) a[j--]+=2;
}
//1+1+1+1+1
for(int i=0,j;i<=7;i++){
for(j=i;j<=11;j++){
a[j]--;
if(a[j]<0) break;
if(j-i+1>=5) DFS(d+1);
}if(j==12) j--;
while(j>=i) a[j--]++;
}
} int main(){
for(T=in(),n=in();T--;){
ans=n;memset(a,0,sizeof(a));
for(int i=1,u,v;i<=n;i++) u=in(),v=in(),a[t[u]]++;
DFS(0);
printf("%d\n",ans);
}return 0;
}

  

NOIP2015 斗地主的更多相关文章

  1. NOIP2015斗地主[DFS 贪心]

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

  2. BZOJ 4325: NOIP2015 斗地主

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

  3. NOIP2015 斗地主(搜索+剪枝)

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

  4. [补档][NOIP2015] 斗地主

    [NOIP2015] 斗地主 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=2106 INPUT 第一行包含用空格隔开的2个正整数Tn,表示手 ...

  5. LOJ2422 NOIP2015 斗地主 【搜索+贪心】*

    LOJ2422 NOIP2015 斗地主 LINK 题目大意很简单,就是问你斗地主的一分手牌最少多少次出完 然后我们发现对于一种手牌状态,不考虑顺子的情况是可以贪心做掉的 然后我们直接枚举一下顺子出牌 ...

  6. 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝

    [BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...

  7. 2106. [NOIP2015] 斗地主

        2106. [NOIP2015] 斗地主 ★★★☆   输入文件:landlords.in   输出文件:landlords.out   简单对比 时间限制:2 s   内存限制:1025 M ...

  8. NOIP2015斗地主题解 7.30考试

    问题 B: NOIP2015 斗地主 时间限制: 3 Sec  内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...

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

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

  10. NOIP2015斗地主(搜索+模拟+贪心)

    %%%Luan 题面就不说了,和斗地主一样,给一组牌,求最少打几次. 注意一点,数据随机,这样我们瞎搞一搞就可以过,虽然直接贪心可以证明是错的. 枚举方法,每次搜索按照(三顺子>二顺子>普 ...

随机推荐

  1. JavaWeb学习笔记——XML和SAX解析区别

  2. Java自定义异常类

    用户可以根据自己的需要定义自己的异常类,定义异常类只需要继承Exception类即可 //================================================= // Fi ...

  3. Java/JavaWeb中读取资源文件

    1.一般工程中使用I/O类指定文件的绝对路径读取 FileInputStream fis = new FileInputStream("src/main/resources/zsm.prop ...

  4. Mac OS下配置Eclipse C++的方法

    http://nonlz.blog.163.com/blog/static/128872032201262622921622/

  5. js获取锚点名称 #

    var thisId = window.location.hash; alert(thisId); 输出 #2

  6. 重写UILabler的sizeThatFits方法,需要触发两次才会有效果

    #import "ViewController.h" @interface SpecialLabel:UILabel @end @implementation SpecialLab ...

  7. Linux下非root用户如何安装软件

    Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...

  8. EF DbModelBuilder

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { var model = modelBuilder.Buil ...

  9. FPM打包工具

    支持的源类型包: dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm: 对rpm进行转换 gem: 对rubygem包进行转换 python: 将Python模块打包成相应的类型 ...

  10. sql server 日期相关操作

    ), ): ), ): :57AM ), ): ), ): ), ): ), ): ), ): ), ): ), ): , ), ): :: ), ): :::827AM ), ): ), ): ), ...