大名鼎鼎的NOIP2015D1T3

题意:

由于一些众所周知的原因,没有完整题面……

给你一副斗地主的手牌(牌数<=23),问最少要几次能出完;

包含双王,没有癞子,连对要三连对以上,可以直接出三张同点数的牌(三对),可以出连着的三对,也可以三带一,三带二,但不能出飞机,可以四张带一对或两张单牌。

题解:

神题啊……orz……虽然写起来并不麻烦,但是当年这个神之题面真是雷倒了无数选手……

提前来做的原因是今天xfz出了一道毒瘤题(密码:yxqak)……是这题的弱化版(其实是道水题啦),本蒟蒻看到题面就吓傻了不敢打,改完题来膜一下原题……

首先注意到花色和点数大小是没用的(王也可以被带着出),且出牌时除非出顺子(连对,连三对),否则出牌的顺序是不会影响到最后答案的;

并且牌数很少(毕竟是斗地主嘛……),最多只会有四个顺子,所以可以直接暴力dfs把所有顺子找出来,枚举怎么出每一个顺子,然后再贪心处理当前的出牌情况;

很容易想到把牌组合起来出越多越好,贪心优先四带二,三带二,三带一,剩余的炸弹,三对,对子和单张直接出掉;

于是就……做完了。

ps:然而实际上由于本题数据太小,爆搜可以轻松通过

(听说欢乐斗地主上100w豆即可一秒切掉此题)

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
int t,n,x,y,ans,num[],tot[];
int gao(){
int ret=;
memset(tot,,sizeof(tot));
for(int i=;i<=;i++){
tot[num[i]]++;
}
while(tot[]&&tot[]>=){
tot[]--;
tot[]-=;
ret++;
}
while(tot[]&&tot[]>=){
tot[]--;
tot[]-=;
ret++;
}
while(tot[]&&tot[]){
tot[]--;
tot[]--;
}
while(tot[]&&tot[]){
tot[]--;
tot[]--;
ret++;
}
while(tot[]&&tot[]){
tot[]--;
tot[]--;
ret++;
}
return ret+tot[]+tot[]+tot[]+tot[];
}
void dfs(int nw){
if(nw>=ans)return;
ans=min(ans,nw+gao());
for(int i=,j;i<=;i++){
j=i;
while(num[j]>=&&j<=)j++;
if(j-i>=){
for(int k=i+;k<j;k++){
for(int l=i;l<=k;l++){
num[l]-=;
}
dfs(nw+);
for(int l=i;l<=k;l++){
num[l]+=;
}
}
}
}
for(int i=,j;i<=;i++){
j=i;
while(num[j]>=&&j<=)j++;
if(j-i>=){
for(int k=i+;k<j;k++){
for(int l=i;l<=k;l++){
num[l]-=;
}
dfs(nw+);
for(int l=i;l<=k;l++){
num[l]+=;
}
}
}
}
for(int i=,j;i<=;i++){
j=i;
while(num[j]&&j<=)j++;
if(j-i>=){
for(int k=i+;k<j;k++){
for(int l=i;l<=k;l++){
num[l]--;
}
dfs(nw+);
for(int l=i;l<=k;l++){
num[l]++;
}
}
}
}
}
int main(){
scanf("%d%d",&t,&n);
while(t--){
ans=inf;
memset(num,,sizeof(num));
for(int i=;i<=n;i++){
scanf("%d%d",&x,&y);
if(!x)x=;
if(x==)x=;
if(x==)x=;
num[x]++;
}
dfs();
printf("%d\n",ans);
}
return ;
}

[LOJ2422]【NOIP2015】斗地主的更多相关文章

  1. LOJ2422 NOIP2015 斗地主 【搜索+贪心】*

    LOJ2422 NOIP2015 斗地主 LINK 题目大意很简单,就是问你斗地主的一分手牌最少多少次出完 然后我们发现对于一种手牌状态,不考虑顺子的情况是可以贪心做掉的 然后我们直接枚举一下顺子出牌 ...

  2. NOIP2015斗地主[DFS 贪心]

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

  3. BZOJ 4325: NOIP2015 斗地主

    4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 684  Solved: 456[Submit][Status] ...

  4. NOIP2015 斗地主(搜索+剪枝)

    4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 270  Solved: 192[Submit][Status] ...

  5. [补档][NOIP2015] 斗地主

    [NOIP2015] 斗地主 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=2106 INPUT 第一行包含用空格隔开的2个正整数Tn,表示手 ...

  6. 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝

    [BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...

  7. 2106. [NOIP2015] 斗地主

        2106. [NOIP2015] 斗地主 ★★★☆   输入文件:landlords.in   输出文件:landlords.out   简单对比 时间限制:2 s   内存限制:1025 M ...

  8. NOIP2015斗地主题解 7.30考试

    问题 B: NOIP2015 斗地主 时间限制: 3 Sec  内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...

  9. [NOIP2015] 斗地主(搜索)

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

  10. NOIP2015斗地主(搜索+模拟+贪心)

    %%%Luan 题面就不说了,和斗地主一样,给一组牌,求最少打几次. 注意一点,数据随机,这样我们瞎搞一搞就可以过,虽然直接贪心可以证明是错的. 枚举方法,每次搜索按照(三顺子>二顺子>普 ...

随机推荐

  1. 脑图工具MindNode"附属节点"是什么意思 图解

    新手会发现在主节点上无论是按Tab子节点还是按Enter附属节点,都是向右延伸,感觉像没区别? 其实不然,从第二个节点开始,你再按 Tab 或者 Enter 就知道区别了. 废话少说,直接上图. 我觉 ...

  2. ONGUI->NGUI->UGUI (Unity UI史)

    各GUI的介绍 ONGUI:Unity自带的绘制界面工具,它的成像原理是基于表层的,所以执行效率非常的低,并且没有提供复杂的UI的接口,就算开发者硬着头皮写上去只能让UI的执行效率更低. NGUI:第 ...

  3. 扩大缩小Linux物理分区大小

    由于产品在不同的标段,设备硬盘也不同, 有些500G,有些320G有些200G,开始在大硬盘上做的配置,想把自己定制好的Linux克隆到小硬盘上,再生龙会纠结空间大小的问题, 因此需要做一些分区的改变 ...

  4. Pyhton学习——Day60

    Form组件 - form表单(验证:保留上次内容) - - Ajax(验证:无需上次内容) - 返回HttpResponse - 前端:跳转或错误信息 1. Form组件扩展: 1.简单扩展 利用F ...

  5. HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换

    题目链接:https://cn.vjudge.net/problem/HDU-2955 题意 突然想找几个银行抢钱. 给出各银行的钱数和被抓的概率,以及能容忍的最大被抓概率. 问他最多能抢到多少钱? ...

  6. Ansible学习记录四:单命令测试

    0.Ansible的group支持all.通配符(*).IP地址 1.查看Ansible的版本 $  ansbile  --version [root@test ~]# ansible --versi ...

  7. 想说再见不容易,win7最新市占率依然超36%

    微软正在通过努力让Windows 7用户升级至Windows 10,不过从目前的市占率来看,他们还是要加把劲了. 微软正在通过努力让Windows 7用户升级至Windows 10,不过从目前的市占率 ...

  8. 鸟哥的linux私房菜

    http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php

  9. 楼宇自控-RS232\RS485\RS422

    1.rs-232-c rs-232-c是美国电子工业协会eia(electronic industry association)制定的一种串行物理接口标准.rs是英文"推荐标准"的 ...

  10. iOS UI16_数据持久化

    // // Student.h // UI16_数据持久化 // // Created by dllo on 15/8/19. // Copyright (c) 2015年 zhozhicheng. ...