首先如果对子和三张牌出现在解中,那么全拆成单张显然没有问题,顺子同理。于是真正有用的牌型就只有单牌、三带一、三带二、四带二了。

暴搜jry手中的牌,然后先搜出双方的大牌型(即三张、四张牌的个数),再枚举三张牌带了几个对子,剩下的三张牌和四张牌带的都是单牌。这些被带的对子和单牌是没有大小限制的,所以对于jry手中的牌,应尽量带掉大牌,网友应尽量带掉小牌,这样才能尽量存在解。

最后剩的都是单牌了,扫一遍判断是否合法即可,总的来说没有坑点。

 #include<cstdio>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
using namespace std; const int N=;
int ans,g[],a[N],b[N],c[N],d[N],e[N];
char s[N]; int F(char c){ return (c>='' && c<='') ? c-'' : g[(int)c]; } bool work(int o,int p){
rep(i,,o){
int x=o+p-i,y=i;
rep(j,,) d[j]=c[j];
for (int j=; ~j; j--){
while (y && d[j]>=) d[j]-=,y--;
while (x && d[j]) d[j]--,x--;
}
if (x|y) continue;
rep(j,,) e[j]=a[j];
x=o+p-i,y=i;
rep(j,,){
while (y && e[j]>=) e[j]-=,y--;
while (x && e[j]) e[j]--,x--;
}
if (x|y) continue;
x=; bool flag=;
rep(j,,){
if (e[j]>x){ flag=; break; }
x+=d[j]-e[j];
}
if (!flag) return ;
}
return ;
} bool solve(int x,int o,int p,int q,int r){
if (x==) return !q && !r && work(o,p);
bool f;
if (c[x]>=){
c[x]-=; f=solve(x+,o,p+,q,r+); c[x]+=;
if (f) return ;
}
if (c[x]>=){
c[x]-=; f=solve(x+,o+,p,q+,r); c[x]+=;
if (f) return ;
}
if (a[x]>= && r){
a[x]-=; f=solve(x+,o,p,q,r-); a[x]+=;
if (f) return ;
}
if (a[x]>= && q){
a[x]-=; f=solve(x+,o,p,q-,r); a[x]+=;
if (f) return ;
}
return solve(x+,o,p,q,r);
} void dfs(int x,int s){
if (x==){ if (!s && solve(,,,,)) ans++; return; }
rep(i,,min(s,b[x])) c[x]=i,dfs(x+,s-i);
} int main(){
g['T']=,g['J']=,g['Q']=,g['K']=,g['A']=,g['']=,g['w']=,g['W']=;
scanf("%s",s);
rep(i,,) b[i]=; b[]=b[]=;
rep(i,,) a[F(s[i])]++,b[F(s[i])]--;
dfs(,); printf("%d\n",ans);
return ;
}

[PKUSC2018]主斗地(搜索+贪心)的更多相关文章

  1. [PKUSC2018]主斗地

    暴搜 非常暴力的搜索,以至于我都不相信我能过. 方法是:暴力枚举所有牌型,然后暴力判断是否可行. 暴力枚举部分: 非常暴力: void dfs(int x,int l){ if(l==0){ flag ...

  2. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  3. Loj#6434「PKUSC2018」主斗地(搜索)

    题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\( ...

  4. 「PKUSC2018」主斗地(暴搜)

    这道斗地主比 \(PKUWC\) 那道可做多了... 我们用 \(NOIP\) 那道斗地主的思路:暴搜出三代和四代,贪心出散牌. 还有jry为什么要出xx网友而不出他的另一个老婆 我们发现两个人的每回 ...

  5. 【LOJ】#6434. 「PKUSC2018」主斗地

    题解 什么,我这题竟然快到了LOJ rk1???? 搜起来有点麻烦,不过感觉还是比斗地主好下手(至今没敢写斗地主 首先是暴力搜牌型,最多\(3^{16}\)(什么判解还要复杂度怂成一团)的样子?? 然 ...

  6. HDU 6034---Balala Power!(搜索+贪心)

    题目链接 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He ...

  7. [NOIP 2010]饮水入城 搜索+贪心

    考试的时候写了个dfs找出来了,最后处理的时候想到了贪心,但是正确性没有想通.然后想了想动规,也没想通.最后没办法,用状态的话用了个状压,弄了40分. 正解是bfs+贪心.Dfs也有过的. 下面题解引 ...

  8. 洛谷 2668&2540 斗地主——搜索+贪心+dp

    题目:https://www.luogu.org/problemnew/show/P2540 发现如果没有顺子,剩下的可以贪心.所以搜索顺子怎么出,然后贪心. 这样只能过不加强版.原因是贪心的时候难以 ...

  9. SPOJ:Strange Waca(不错的搜索&贪心&剪枝)

    Waca loves maths,.. a lot. He always think that 1 is an unique number. After playing in hours, Waca ...

随机推荐

  1. 响应面分析 | response surface analysis | R代码

    先开题,慢慢补充. 参考: 什么是响应面(RSM)分析 Response-Surface Methods in R, Using rsm In-class Examples with R Code R ...

  2. 关于如何重写Controller和Service技术攻关文档

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39784756/articl ...

  3. 微信小程序wx.uploadFile的两个坑

    -- setImage:function(e){ var _this = this //坑1 wx.chooseImage({ count: , sizeType: ['original', 'com ...

  4. 008 BOM

    一:说明 1.说明 浏览器对象模型 2.顶级对象 浏览器中的顶级对象是window 页面中的顶级对象是document 因此: 变量属于window的,函数也是window的. 就可以使用window ...

  5. ISO/IEC 9899:2011 条款6.5.10——按位与操作符

    6.5.10 按位与操作符 语法 1.AND-expression: equality-expression AND-expression    equality-expression 约束 2.这些 ...

  6. linux硬盘分区与格式化

    linux硬盘分区与格式化: 1. 设备管理 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘.光驱等 IDE 或 SCSI 设备也不例外. Linux 把各种 IDE 设备分配了一 ...

  7. 查看Oracle中是否有锁表

    转: 查看Oracle中是否有锁表 2018-04-23 17:59 alapha 阅读(19450) 评论(0) 编辑 收藏 一.用dba用户登录,或者将用户赋权为DBA用户 命令: su - or ...

  8. 【Redis】CacheCloud介绍及快速开始

    CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone.Redis Sentinel.Redis Cluster)自动部署.解 ...

  9. 【Mac】解决外接显示器时无法用键盘调节音量

    背景:mac book pro  外接一台显示器 可以有音量,音量较小, 外接两台显示器时候直接显示如下了 解决办法: 操作步骤: 从 GitHub 下载 SoundFlower 扩展,并安装.(首次 ...

  10. Spring AOP无法拦截Controller

    参考@参考文章中的评论 首先,应该打开aop代理 <aop:aspectj-autoproxy proxy-target-class="true"/> 其次,应该讲ao ...