反正肯定是大模拟

但是每一个可以出的牌都搜一定不是最优的

考虑最特殊的出牌方案:顺子(单,对,三)

每一种方案再加上暴力贪心打出剩下的牌的步数

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<iostream>
  6. #define N 35
  7. using namespace std;
  8. int a[N],num[N],n,T,ANS;
  9. void read(){
  10. int x,nouse;
  11. memset(a,0,sizeof a);
  12. for(int i=1;i<=n;i++){
  13. scanf("%d%d",&x,&nouse);
  14. if(x==1) a[12]++; if(x==2) a[13]++;
  15. if(x==0) a[14]++; if(x>=3) a[x-2]++;
  16. }
  17. }
  18. int no_str(){
  19. memset(num,0,sizeof num); int tot=0;
  20. for(int i=1;i<=14;i++) num[a[i]]++;
  21. while(num[4]&&num[2]>=2)num[4]--,num[2]-=2,tot++;
  22. while(num[4]&&num[1]>=2)num[4]--,num[1]-=2,tot++;
  23. while(num[3]&&num[2])num[3]--,num[2]--,tot++;
  24. while(num[3]&&num[1])num[3]--,num[1]--,tot++;
  25. return tot+num[1]+num[2]+num[3]+num[4];
  26. }
  27. void dfs(int step){
  28. if(step>ANS) return;
  29. ANS=min(ANS,step+no_str());
  30. for(int i=1;i<=11;i++){
  31. int ii=i;
  32. while(ii<=12&&a[ii]>=3)ii++;ii--;
  33. if(ii-i+1<2) continue;
  34. for(;ii-i+1>=2;ii--){
  35. for(int j=i;j<=ii;j++) a[j]-=3;
  36. dfs(step+1);
  37. for(int j=i;j<=ii;j++) a[j]+=3;
  38. }
  39. }
  40. for(int i=1;i<=10;i++){
  41. int ii=i;
  42. while(ii<=12&&a[ii]>=2)ii++;ii--;
  43. if(ii-i+1<3) continue;
  44. for(;ii-i+1>=3;ii--){
  45. for(int j=i;j<=ii;j++) a[j]-=2;
  46. dfs(step+1);
  47. for(int j=i;j<=ii;j++) a[j]+=2;
  48. }
  49. }
  50. for(int i=1;i<=8;i++){
  51. int ii=i;
  52. while(ii<=12&&a[ii])ii++;ii--;
  53. if(ii-i+1<5) continue;
  54. for(;ii-i+1>=5;ii--){
  55. for(int j=i;j<=ii;j++) a[j]--;
  56. dfs(step+1);
  57. for(int j=i;j<=ii;j++) a[j]++;
  58. }
  59. }
  60. }
  61. int main()
  62. {
  63. //freopen("landlords.in","r",stdin);
  64. //freopen("landlords.out","w",stdout);
  65. scanf("%d%d",&T,&n);
  66. while(T--){
  67. read();
  68. ANS=no_str();
  69. dfs(0);
  70. printf("%d\n",ANS);
  71. }
  72. }

noip 2015 斗地主 大爆搜!!!的更多相关文章

  1. [NOIP2015] 斗地主 大爆搜

    考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...

  2. Luogu 2668 NOIP 2015 斗地主(搜索,动态规划)

    Luogu 2668 NOIP 2015 斗地主(搜索,动态规划) Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来 ...

  3. [BZOJ 4325][NOIP 2015] 斗地主

    一道防AK好题 4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 820  Solved: 560[Submit] ...

  4. [NOIP2009] 靶形数独 骚气的大爆搜

    这两天OD留的题是搜索,这个东西,就是历年的NOIP压轴题嘛.做了几道什么斗地主啊啥的,感觉还是这题我还懂点. 这道题的搜(xia)索(da)思路是这样的:预处理出一切能处理的东西. 数独大家都了解吧 ...

  5. [NOIp 2015]斗地主

    Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3& ...

  6. bzoj4325: NOIP2015 斗地主(爆搜+模拟)

    去年的我还不会打斗地主呵呵 觉得这道题挺难的..抄了一遍题解,感触挺多的= = 首先出牌的方式太多了不能每次都枚举所有的出牌方式, 于是分成两部分:1.顺子 2.带牌等其他 每次dfs都搜顺子,而且顺 ...

  7. 基础算法(搜索):NOIP 2015 斗地主

    Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3& ...

  8. [NOIP 2015] 斗地主 landlord

    想起几个月之前的 noip2015-只会瞎搞-这道题骗了 30 分.T T 题目 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的 A 到 K 加上大小王的共 54 张牌 ...

  9. NOIP2013华容道 大爆搜

    预处理出每个点周围四个点互相到达的最短路,再在整个图上跑SPFA,要记录路径 #include<cstdio> #include<cstring> #include<io ...

随机推荐

  1. Python__flask初识

    1.  debug:在app.run()里面加上app.run(debug=True), 在浏览器中调试的时候可以直接显示出错误. 2.  在url中传递参数,可以这样 @app.route('/ch ...

  2. 数据库面试题目- ORACLE

    Posted on 2009-06-08 17:38 漠北的天空 阅读(110) 评论(0)  编辑 收藏 1.       列举几种表连接方式 Answer:等连接(内连接).非等连接.自连接.外连 ...

  3. java web(1)

    获取项目的根路径:this.getservletcontext().getRealPath() 下载:不正规做法:test/html!!!! 正规做法:1,在响应头设置:res.addHeader(& ...

  4. JAVA代码设置selector不同状态下的背景颜色

    代码实现Shape 代码实现Selector StateListDrawable与GradientDrawable 的运用 在Android开发中,我们时常会用到自定义drawable样式,在draw ...

  5. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  6. element.dispatchEvent is not a function的解决

    Firebug中的出错提示: element.dispatchEvent is not a function element.dispatchEvent(event); prototype.js (第 ...

  7. log4j2.xml全配置文件

    可以参考如下配置 <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF &g ...

  8. HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么

    Hashmap在并发环境下,可能出现的问题: 1.多线程put时可能会导致get无限循环,具体表现为CPU使用率100%: 原因:在向HashMap put元素时,会检查HashMap的容量是否足够, ...

  9. Java开源生鲜电商平台-系统简介

    Java开源生鲜电商平台-系统简介 1.生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台,连接买家与卖家之间的一个平台 看以 ...

  10. 从有值的ID到汉字编码

    前些日子漫无目的地刷着朋友圈,突然一个ID从字丛中闯入我的眼睛--"某&字"(为保护当事人隐私,此处用'某''字'代替),浸淫于计算机而产生的直觉告诉我,这是一个有值的表达 ...