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 ...
随机推荐
- aside元素
aside元素用来表示当前页面或文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用.侧边栏.广告.导航条,以及其他类似的有别于主要内容的部分. aside元素主要有以下两种使用方法: 1.包 ...
- Implement int sqrt(int x).
自己设计函数,实现求根号.x是非负整数. Input: 8 Output: 2 当开出根号后有小数,则省略小数部分.. 思路:只要找到一个数a,a*a<=x而且(a+1)*(a+1)>x, ...
- javascript学习(三)——常用方法(2)
一.兼容性较高的浏览器页面关闭 //关闭网页,不支持火狐(火狐返回上次浏览页面) //FireFox非window.open()等弹出页面,需要在地址栏中输入about:config, 然后将do ...
- JDK内置工具之一——JMap(java memory map)
1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量). 可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 j ...
- eclipse web开发Server配置
用 Tomcat 和 Eclipse 开发 Web 应用程序:http://www.ibm.com/developerworks/cn/opensource/os-eclipse-tomcat/ Ec ...
- 模仿天猫实战【SSM】——总结
第一篇文章链接:模仿天猫实战[SSM版]--项目起步 第二篇文章链接:模仿天猫实战[SSM版]--后台开发 总结:项目从4-27号开始写,到今天5-7号才算真正的完工,有许多粗糙的地方,但总算完成了, ...
- Ocelot中文文档-路由
Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务.目前是以另一个http请求的形式(将来可能是任何传输机制). Ocelot将路由一个请求到另一个请求描述为ReRoute.为了在O ...
- Asp.Net WebApi Swagger终极搭建
[PS:原文手打,转载说明出处,博客园] 关于为什么用Swagger 目前稍微有点规模的公司,已经从原先的瀑布流开发到了敏捷开发,实现前后端分离,为此后端工程师只关注写好Api即可,那程序员最讨厌的就 ...
- JavaScript打开新窗口被拦截问题
新窗口打开页面,一个很常用的效果,至于代码,一般第一反应都是这么写: window.open(url); 但是主流的浏览器都会拦截这种效果(可能这些年弹窗广告太多,如果浏览器不拦截,用户受不了) ...
- Web移动端页面 --响应式和动态REM
响应式 什么是响应式页面呢? 顾名思义响应式页面就是能做出响应的页面,它的页面效果不是定死的,会随着用户的改变而改变. 如何着手响应式有以下几个思考的方向 找一份设计图 使用Media Query 隐 ...