[NOIP2015] 斗地主 大爆搜
考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力。。然后暴力也懒得打了,小数据模拟骗30分hhh
然而正解真的是暴力。。大爆搜。。
然后我的内心拒绝改这道题(TAT)
不过在wcx大佬的帮助下,还是成功的弄过去了。
首先我们明确两个显而易见的问题:答案与花色无关,与出牌顺序无关(废话)
然后我们的切入点是,顺子(连顺等)和带牌(三带一等),因为他们是出牌多的大户。
结论:顺子一定比带牌优(因为可以多出单张)。(不信你可以尝试举出反例)
然后既然这样,我们就先举出全部用带牌的步数,然后一点一点用顺子更新就行了。
有个技巧:按照顺子顺序编号:3,4,5,6···K,A,2。这样的话就可以在循环找顺子的时候方便
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; #define pos(i,a,b) for(int i=(a);i<=(b);i++) #define N 60 int t,n; int size[N]; int getnum(int x){//小技巧 if(x==1) return 12; if(x==2) return 13; if(x==0) return 14; return x-2; } int ans; int doit(){//找到当前剩余牌下全部带牌的最小步骤 int tmp=0; int tp[10]={0}; pos(i,1,14){ tp[size[i]]++; } while(tp[4]&&tp[2]>=2){//四带二 tp[4]--;tp[2]-=2;tmp++; } while(tp[4]&&tp[1]>=2){//四带一 tp[4]--;tp[1]-=2;tmp++; } while(tp[3]&&tp[2]>=1){//三带二 tp[3]--;tp[2]-=1;tmp++; } while(tp[3]&&tp[1]>=1){//三带一 tp[3]--;tp[1]-=1;tmp++; } tmp+=tp[1]+tp[2]+tp[3]+tp[4];//单牌 return tmp; } void dfs(int cnt){ if(cnt>ans) return; int x=doit(); ans=min(ans,cnt+x); pos(i,1,11){//三连对 int j; for(j=i;size[j]>=3&&j<=12;j++); if(j-i<2) continue; for(int k=j;k-i>=2;k--){ pos(l,i,k-1) size[l]-=3; dfs(cnt+1); pos(l,i,k-1) size[l]+=3; } } pos(i,1,10){//连对 int j; for(j=i;size[j]>=2&&j<=12;j++); if(j-i<3) continue; for(int k=j;k-i>=3;k--){ pos(l,i,k-1) size[l]-=2; dfs(cnt+1); pos(l,i,k-1) size[l]+=2; } } pos(i,1,8){//顺子 int j; for(j=i;size[j]>=1&&j<=12;j++); if(j-i<5) continue; for(int k=j;k-i>=5;k--){ pos(l,i,k-1) size[l]--; dfs(cnt+1); pos(l,i,k-1){ size[l]++; } } } } int main(){ scanf("%d%d",&t,&n); while(t--){ memset(size,0,sizeof(size)); pos(i,1,n){ int x,y; scanf("%d%d",&x,&y); size[getnum(x)]++; } ans=doit(); dfs(0); printf("%d\n",ans); } return 0; }
[NOIP2015] 斗地主 大爆搜的更多相关文章
- noip 2015 斗地主 大爆搜!!!
反正肯定是大模拟 但是每一个可以出的牌都搜一定不是最优的 考虑最特殊的出牌方案:顺子(单,对,三) 每一种方案再加上暴力贪心打出剩下的牌的步数 #include<cstdio> #incl ...
- bzoj4325: NOIP2015 斗地主(爆搜+模拟)
去年的我还不会打斗地主呵呵 觉得这道题挺难的..抄了一遍题解,感触挺多的= = 首先出牌的方式太多了不能每次都枚举所有的出牌方式, 于是分成两部分:1.顺子 2.带牌等其他 每次dfs都搜顺子,而且顺 ...
- [NOIP2009] 靶形数独 骚气的大爆搜
这两天OD留的题是搜索,这个东西,就是历年的NOIP压轴题嘛.做了几道什么斗地主啊啥的,感觉还是这题我还懂点. 这道题的搜(xia)索(da)思路是这样的:预处理出一切能处理的东西. 数独大家都了解吧 ...
- NOIP2013华容道 大爆搜
预处理出每个点周围四个点互相到达的最短路,再在整个图上跑SPFA,要记录路径 #include<cstdio> #include<cstring> #include<io ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- [补档][NOIP2015] 斗地主
[NOIP2015] 斗地主 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=2106 INPUT 第一行包含用空格隔开的2个正整数Tn,表示手 ...
- [NOIP2015] 斗地主(搜索)
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- hdu4536-XCOM Enemy Unknown(爆搜)
XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...
随机推荐
- 【LeetCode】87. Scramble String
题目: Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty subs ...
- 【LeetCode】187. Repeated DNA Sequences
题目: All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: " ...
- 【Android Developers Training】 88. 使用备份API
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 7.java的请求转发和请求重定向
1.请求重定向:是客户端的行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变,一次新的转发. 2.请求转发:是服务器的行 ...
- 15个必须知道的 Chrome 开发技巧
在 Web 开发者中,Chrome 是使用最广泛的浏览器.六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具.你可能已经熟悉了它的部分功能,如使用 console 和 d ...
- 【JS】jquery通知插件toastr
toastr是一款非常棒的基于jquery库的非阻塞通知提示插件,toastr可设定四种通知模式:成功,出错,警告,提示,而提示窗口的位置,动画效果都可以通过能数来设置,在官方站可以通过勾选参数来生成 ...
- [图形学] Chp9 三维几何变换--栈处理函数与矩阵管理函数的区别
矩阵管理函数:glLoadIdentity()是把当前活动矩阵设置为单位矩阵. 栈处理函数:glPushMatrix()是将当前活动的变换矩阵复制一份,压入栈顶:glPopMatrix()是破坏当前活 ...
- Maven搭建Hadoop开发环境
1.安装maven(用于管理仓库,jar包的管理) 1.解压maven安装包 2.把maven添加到环境变量/etc/profile 3.添加maven目录下的conf/setting.xml文件到- ...
- 第二章:1.0 Django 入门和开发环境
1. 选择 Django Web框架来做Web接口开发,主要原因是由于学习资料丰富,便于学习. 2. Django 对 python 版本的支持情况. Django 的版本在 1.8 ,1.9 , 1 ...
- VS2010中的sln,suo分别是什么文件
相当于VC6里的.dsw和.dsp .Net解决方案下 .sln文件和.suo文件的解释: When a Web site is created, a solution file (.sln) and ...