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 ...
随机推荐
- section元素与div、article元素的区别
section元素是对网站或应用程序中页面上的内容进行分块,一个section元素通常有标题和内容组成.但section元素并非一个普通的容器元素,当一个容器需要直接定义样式或通过脚本定义行为时,推荐 ...
- 简单工厂,Factory Method(工厂方法)和Abstract Factory(抽象工厂)模式
对于简单工厂来说,它的工厂只能是这个样子的 public class SimplyFactory { /** * 静态工厂方法 */ public static Prouct factory(Str ...
- IntelliJ IDEA下Cannot resolve symbol XXX的解决方法
Idea导入maven项目后,运行能通过,但是打开一些类后,会出现Cannot resolve symbol XXX的错误提示. 考虑几种可能: 1.JDK版本,设置JDK和Maven的JDK版本. ...
- 对ManualResetEvent和AutoResetEvent的巩固练习
在多线程编程中,最常用到的就是线程同步问题,前段时间开发地址采集服务器,需要携带经纬度到MapAbc中采集后,返回地址,才可以进行下一条经纬度的采集,因为队列处理和解析不是同一个线程,并且是解析经纬度 ...
- Java永久代去哪儿了
http://www.infoq.com/cn/articles/Java-PERMGEN-Removed 在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法 ...
- Sublime text 3 注册码激活码 版本号3143
—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...
- Pycharm安装教程
1.下载PyQt 官方网站:http://www.riverbankcomputing.com/software/pyqt/download5 我的操作系统是64位的,安装的是Python3.4.3, ...
- 基于Python的数据分析(2):字符串编码
在上一篇文章<基于Python的数据分析(1):配置安装环境>中的第四个步骤中我们在python的启动步骤中强制要求加载sitecustomize.py文件并设置其默认编码为"u ...
- SOFA 源码分析— 事件总线
前言 大部分框架都是事件订阅功能,即观察者模式,或者叫事件机制.通过订阅某个事件,当触发事件时,回调某个方法.该功能非常的好用,而 SOFA 内部也设计了这个功能,并且内部大量使用了该功能.来看看是如 ...
- python的约束库constraint解决《2018刑侦科题目》
Github地址:https://github.com/ZJW9633/hello-word/blob/master/Xingzhenke 题目分析: 10道题互相关联,耦合性强,暴力求解需4^10种 ...