NOIP2015 斗地主
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 斗地主的更多相关文章
- NOIP2015斗地主[DFS 贪心]
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- BZOJ 4325: NOIP2015 斗地主
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 684 Solved: 456[Submit][Status] ...
- NOIP2015 斗地主(搜索+剪枝)
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 270 Solved: 192[Submit][Status] ...
- [补档][NOIP2015] 斗地主
[NOIP2015] 斗地主 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=2106 INPUT 第一行包含用空格隔开的2个正整数Tn,表示手 ...
- LOJ2422 NOIP2015 斗地主 【搜索+贪心】*
LOJ2422 NOIP2015 斗地主 LINK 题目大意很简单,就是问你斗地主的一分手牌最少多少次出完 然后我们发现对于一种手牌状态,不考虑顺子的情况是可以贪心做掉的 然后我们直接枚举一下顺子出牌 ...
- 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
[BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...
- 2106. [NOIP2015] 斗地主
2106. [NOIP2015] 斗地主 ★★★☆ 输入文件:landlords.in 输出文件:landlords.out 简单对比 时间限制:2 s 内存限制:1025 M ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- [NOIP2015] 斗地主(搜索)
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- NOIP2015斗地主(搜索+模拟+贪心)
%%%Luan 题面就不说了,和斗地主一样,给一组牌,求最少打几次. 注意一点,数据随机,这样我们瞎搞一搞就可以过,虽然直接贪心可以证明是错的. 枚举方法,每次搜索按照(三顺子>二顺子>普 ...
随机推荐
- 自然语言14.1_python实现PorterStemmer算法
QQ:231469242 欢迎喜欢nltk朋友交流 #https://tartarus.org/martin/PorterStemmer/python.txt #!/usr/bin/env pytho ...
- super 要点
class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } p ...
- C++/Python 混合编程 Clion IDE 搭建
1.Clion IDE 环境 2.TdmGcc C++ 编译器 3.WinPython Python 科学计算环境 4.MySQL SQL 数据库 5.Git GitHub 版本控制 插件
- Linux的io机制
Linux的io机制 Buffered-IO 和Direct-IO Linux磁盘I/O分为Buffered IO和Direct IO,这两者有何区别呢? 对于Buffered IO: 当应用程序尝试 ...
- Lua弱引用table
弱引用table 与python等脚本语言类似地,Lua也采用了自动内存管理(Garbage Collection),一个程序只需创建对象,而无需删除对象.通过使用垃圾收集机制,Lua会自动删除过期对 ...
- Windows溢出提权小结
1. 查看系统打补丁情况:systeminfo 2. 查看KB-EXP表: KB2360937 MS10-084 KB2478960 MS11-014 KB2507938 MS11-056 KB2 ...
- 409. Longest Palindrome
Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...
- chrome调试文章
http://blog.csdn.net/a6225301/article/details/20207191#t1 http://www.360doc.com/content/13/1220/11/8 ...
- Storm集群安装部署步骤【详细版】
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...
- mysql存储过程对900w数据进行操作测试
新增索引:LTER TABLE `tablename` ADD INDEX `sdhid` (`createTime`) USING BTREE ;[SQL]ALTER TABLE `tablenam ...