noip 2015 斗地主 大爆搜!!!
反正肯定是大模拟
但是每一个可以出的牌都搜一定不是最优的
考虑最特殊的出牌方案:顺子(单,对,三)
每一种方案再加上暴力贪心打出剩下的牌的步数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#define N 35
using namespace std;
int a[N],num[N],n,T,ANS;
void read(){
int x,nouse;
memset(a,0,sizeof a);
for(int i=1;i<=n;i++){
scanf("%d%d",&x,&nouse);
if(x==1) a[12]++; if(x==2) a[13]++;
if(x==0) a[14]++; if(x>=3) a[x-2]++;
}
}
int no_str(){
memset(num,0,sizeof num); int tot=0;
for(int i=1;i<=14;i++) num[a[i]]++;
while(num[4]&&num[2]>=2)num[4]--,num[2]-=2,tot++;
while(num[4]&&num[1]>=2)num[4]--,num[1]-=2,tot++;
while(num[3]&&num[2])num[3]--,num[2]--,tot++;
while(num[3]&&num[1])num[3]--,num[1]--,tot++;
return tot+num[1]+num[2]+num[3]+num[4];
}
void dfs(int step){
if(step>ANS) return;
ANS=min(ANS,step+no_str());
for(int i=1;i<=11;i++){
int ii=i;
while(ii<=12&&a[ii]>=3)ii++;ii--;
if(ii-i+1<2) continue;
for(;ii-i+1>=2;ii--){
for(int j=i;j<=ii;j++) a[j]-=3;
dfs(step+1);
for(int j=i;j<=ii;j++) a[j]+=3;
}
}
for(int i=1;i<=10;i++){
int ii=i;
while(ii<=12&&a[ii]>=2)ii++;ii--;
if(ii-i+1<3) continue;
for(;ii-i+1>=3;ii--){
for(int j=i;j<=ii;j++) a[j]-=2;
dfs(step+1);
for(int j=i;j<=ii;j++) a[j]+=2;
}
}
for(int i=1;i<=8;i++){
int ii=i;
while(ii<=12&&a[ii])ii++;ii--;
if(ii-i+1<5) continue;
for(;ii-i+1>=5;ii--){
for(int j=i;j<=ii;j++) a[j]--;
dfs(step+1);
for(int j=i;j<=ii;j++) a[j]++;
}
}
}
int main()
{
//freopen("landlords.in","r",stdin);
//freopen("landlords.out","w",stdout);
scanf("%d%d",&T,&n);
while(T--){
read();
ANS=no_str();
dfs(0);
printf("%d\n",ANS);
}
}
noip 2015 斗地主 大爆搜!!!的更多相关文章
- [NOIP2015] 斗地主 大爆搜
考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...
- Luogu 2668 NOIP 2015 斗地主(搜索,动态规划)
Luogu 2668 NOIP 2015 斗地主(搜索,动态规划) Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来 ...
- [BZOJ 4325][NOIP 2015] 斗地主
一道防AK好题 4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 820 Solved: 560[Submit] ...
- [NOIP2009] 靶形数独 骚气的大爆搜
这两天OD留的题是搜索,这个东西,就是历年的NOIP压轴题嘛.做了几道什么斗地主啊啥的,感觉还是这题我还懂点. 这道题的搜(xia)索(da)思路是这样的:预处理出一切能处理的东西. 数独大家都了解吧 ...
- [NOIp 2015]斗地主
Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3& ...
- bzoj4325: NOIP2015 斗地主(爆搜+模拟)
去年的我还不会打斗地主呵呵 觉得这道题挺难的..抄了一遍题解,感触挺多的= = 首先出牌的方式太多了不能每次都枚举所有的出牌方式, 于是分成两部分:1.顺子 2.带牌等其他 每次dfs都搜顺子,而且顺 ...
- 基础算法(搜索):NOIP 2015 斗地主
Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3& ...
- [NOIP 2015] 斗地主 landlord
想起几个月之前的 noip2015-只会瞎搞-这道题骗了 30 分.T T 题目 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的 A 到 K 加上大小王的共 54 张牌 ...
- NOIP2013华容道 大爆搜
预处理出每个点周围四个点互相到达的最短路,再在整个图上跑SPFA,要记录路径 #include<cstdio> #include<cstring> #include<io ...
随机推荐
- c#实例化继承类,必须对被继承类的程序集做引用
0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Culture=neutral, PublicKeyTo ...
- java 中 printf()语句的理解
对print和println的理解很简单,今天突然接触到printf(),有点懵,整理了下也帮自己理一理 printf是格式化输出的形式 下在举个例子: package other; public c ...
- 深入了解Collections
在 Java集合类框架里有两个类叫做Collections(注意,不是Collection!)和Arrays,这是JCF里面功能强大的工具,但初学者往往会忽视.按JCF文档的说法,这两个类提供了封装器 ...
- Xshell 链接 Could not connect to '192.168.80.129' (port 22): Connection failed
在使用Xshell链接虚拟机VM里面的Linux的时候.链接失败,报 Could not connect to ): Connection failed 解决步骤: 1.重启VM.Linux.Xshe ...
- Java语言概论
第1章 ■ Java的发展简史及特点 ■ J2SDK的下载与安装 ■ Java应用程序的编写 ■ Eclipse的下载及使用 ■ 正确安装使用J2SDK ■ 使用记 ...
- Day9 基于TCP的套接字和基于UDP的套接字
服务端: ss=socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字 ss.listen() #监听套接字, inf_loop: #服务器无限循环 cs=ss.accept( ...
- Ocelot中文文档-Raft(实验功能不能用于生产环境)
Ocelot最近整合了Rafty,这是我在去年一直研究的Raft的一个实现. 这个项目实验性非常强,所以在我认为它没问题之前,请不要在生产环境中使用Ocelot的这个功能. Raft是一种分布式一致性 ...
- Spring Boot【快速入门】
Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...
- “蝉原则”与CSS3随机多背景随机圆角等效果
一.什么是“蝉原则”? “蝉原则”,英文称作“cicada principle”,是一种让事物的重复出现符合“自然随机性”的规则,为什么这么说呢? “蝉原则”源自于北美,中国似乎并未有这样的说法,这背 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...