这类题...真的写不动T T

  首先可以发现没有顺子的话出牌次数是一定的, 换句话说只有顺子会影响出牌次数。

  所以可以暴搜出所有顺子的方案, 搜完之后记忆化搜索求一下a张1张同色牌, b张2张同色牌,c张3张同色牌, d张4张同色牌的最少出牌次数, 注意搜索的时候b可以拆出2个a, c可以拆出1个a, 2个b, d可以拆除2个b或者1个a, 1个c, 然后剩下的直接搜就好了, 这个效率不会估T T

  所以求可行方案用记忆化搜索也是很快的...效率大概就是状态数...

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=, inf=1e9;
int T, n, x, y;
int f[maxn][maxn][maxn][maxn], cnt[maxn], cntsum[maxn];
int least[]={, , , };
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
int dfs(int a, int b, int c, int d)
{
if(~f[a][b][c][d]) return f[a][b][c][d];
int ans=inf;
if(b) ans=min(ans, dfs(a+, b-, c, d));
if(c) ans=min(ans, dfs(a+, b+, c-, d));
if(d) ans=min(ans, min(dfs(a+, b, c+, d-), dfs(a, b+, c, d-)));
if(a && c) ans=min(ans, dfs(a-, b, c-, d)+);
if(b && c) ans=min(ans, dfs(a, b-, c-, d)+);
if(a>= && d) ans=min(ans, dfs(a-, b, c, d-)+);
if(b>= && d) ans=min(ans, dfs(a, b-, c, d-)+);
return f[a][b][c][d]=min(ans, a+b+c+d);
}
int solve(int step)
{
int ans=inf;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
int len=;
for(int k=j;k<=;k++) if(cnt[k]>=i) len++; else break;
for(int k=j+least[i]-;k<=j+len-;k++)
{
for(int l=j;l<=k;l++) cnt[l]-=i;
ans=min(ans, solve(step+));
for(int l=j;l<=k;l++) cnt[l]+=i;
}
}
cntsum[]=cntsum[]=cntsum[]=cntsum[]=;
for(int i=;i<=;i++) cntsum[cnt[i]]++;
if(cnt[]==) ans=min(ans, step++dfs(cntsum[], cntsum[], cntsum[], cntsum[]));
cntsum[]+=cnt[];
ans=min(ans, step+dfs(cntsum[], cntsum[], cntsum[], cntsum[]));
return ans;
}
int main()
{
memset(f, -, sizeof(f));
f[][][][]=;
read(T); read(n);
while(T--)
{
memset(cnt, , sizeof(cnt));
for(int i=;i<=n;i++) read(x), read(y), cnt[x==?:x]++;
printf("%d\n", solve());
}
return ;
}

NOIP2015Day1T3斗地主(DFS)的更多相关文章

  1. NOIP2015斗地主[DFS 贪心]

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

  2. ZJOI2017 Day1

    私のZJOI Day1 2017-3-21 07:52:53 有人在暴力膜 苟-- 富贵 无相忘 ZJOI2017交流群 133135071 如果你足够厉害 如果你足够厉害 如果你足够厉害 其实完全可 ...

  3. NOIP 历年试题大致考点总结

    总的来说,水平还不够-- 要努力了! NOIP2012 D1T1 模拟, 字符串 D1T2 贪心, 数学 (推导贪心策略), 高精度 D1T3 unsolved 开车旅行 倍增 D2T1 解线性模方程 ...

  4. 斗地主(Noip2015Day1T3)

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

  5. AC日记——斗地主(dfs)

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

  6. 【NOIP2015】斗地主 题解(DFS+贪心)

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

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

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

  8. UOJ147 斗地主

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

  9. [NOIP2015] 提高组 洛谷P2668 斗地主

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

随机推荐

  1. mongo复杂操作

    相比关系型数据库, Array [1,2,3,4,5] 和 Object { 'name':'DragonFire' } 是MongoDB 比较特殊的类型了 特殊在哪里呢?在他们的操作上又有什么需要注 ...

  2. 堆中的路径(MOOC)

    将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤),分别是插入元素的个数.以及需要打印的路径条 ...

  3. openvpn部署

    原文发表于cu:2016-03-29 参考文档: 安装:http://qicheng0211.blog.51cto.com/3958621/1575273 安装:http://www.ipython. ...

  4. less 语法特性翻译稿 - 特性快速预览部分

    原文地址 http://lesscss.cn/features/ 概述 作为CSS的一种扩展语法,Less不仅仅向后兼容CSS,新的特性也是基于CSS现有语法.这使得学习Less变得容易,如果你有所怀 ...

  5. 5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...

  6. 《JavaScript设计模式与开发实践》——第3章 闭包和高阶函数

    闭包 变量的作用域和生存周期密切相关 高阶函数 函数可以作为参数被传递 函数可以作为返回值输出

  7. P4环境搭建

    P4环境搭建 执行仓库中所有脚本,即可即可安装所有依赖项. GitHub链接 脚本执行顺序:deps,p4c-bm,bmv2,p4c

  8. Alpha-9

    前言 失心疯病源9 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 熬夜肝代码 代码签入github 明天的计划 最好能够完成对接环节 准备展示内容 还剩下哪 ...

  9. OSG学习:阴影代码示例

    效果图: 代码示例: #include <osgViewer/Viewer> #include <osg/Node> #include <osg/Geode> #i ...

  10. 《高性能JavaScript》学习笔记——日更中

    ------------------2016-7-20更------------------ 最近在看<高性能JavaScript>一书,里面当中,有讲很多提高js性能的书,正在看的过程中 ...