斗地主

思路 :读入时注意将A作为第14张牌,因为它可以连在K后,

总体思路为 先出炸弹和四带二 再出三带一 再把对牌和单牌出完 记录并更新Answer,后枚举顺子,并继续向下搜索。

注意:弄明白题意,题目描述不太清楚。。。。另外,我觉的牌的花色只是能用来区分大小王。另外在整顺子之前也可以用贪心来搞其他类似四带二,三带一等的牌

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std;
const int Max = ;
int T, N, Answer ;
int card [Max];
int Count [Max];
void DFS (int X)
{
if (X > Answer ) return;
int rest = ;
memset (Count, , sizeof (Count));
for (int i = ; i <= ; i++)
Count [card[i]]++;
for (; Count []; )
{
Count []--; //炸弹
rest++;
if (Count [] >= ) //判断能不能带2
Count [] -= ;
else if (Count [] >= )
Count [] -= ;
}
for (; Count []; )
{
Count []--; //三张牌
rest++;
if (Count []) //能不能带一
Count []--;
else if (Count [])
Count []--;
}
if (card [] && card [] && Count [] >= ) //看看剩下的单牌有没有王炸
rest--;
rest += Count [] + Count [];
Answer = min (rest + X, Answer );
for (int i = , j; i <= ; ++i) //单顺子
{
for (j = i; card [j] && j <= ; ++j)
{
card [j]--;
if (j - i + >= ) //如果剩下的牌多于五张 ,则向下搜索
DFS (X + );
}
for (; j > i; )
card [--j]++;
}
for (int i = , j; i <= ; ++i) //双顺子
{
for (j = i; card [j] >= && j <= ; ++j)
{
card [j] -= ;
if (j - i + >= )
DFS(X + );
}
for (; j > i; )
card [--j] += ;
}
for (int i = , j; i <= ; ++i) // 三顺子
{
for (j = i; card [j] >= && j <= ; ++j)
{
card [j] -= ;
if (j - i + >= )
DFS (X + );
}
for (; j>i;)
card [--j] += ;
}
}
int main()
{
cin >> T >> N;
int A, B;
while (T--)
{
memset (card, , sizeof (card));
Answer = N;
for (int i = ; i <= N; i++)
{
cin >> A >> B;
if (A == ) card [B - ]++; //王 要分开存 ,因为他们不能组成对子 ,不能当对牌出
else if (A == ) card []++;
else card [A]++;
}
DFS ();
cout << Answer << endl;
}
return ;
}

斗地主 (NOIP2015 Day1 T3)的更多相关文章

  1. 【NOIP2015 DAY1 T3 】斗地主(landlords)

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

  2. codevs 4511 信息传递(NOIP2015 day1 T2)

    4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...

  3. 【NOIP2016】Day1 T3 换教室(期望DP)

    题目背景 NOIP2016 提高组 Day1 T3 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在 n 个时间段上. ...

  4. JOISC 2017 Day1 T3 烟花棒

    JOISC 2017 Day1 T3 烟花棒 题意: ​ 数轴上有\(N\)人在放烟花,一开始只有第\(K\)个人的烟花是点燃的,烟花燃烧的时间为\(T\)秒,求让所有人的烟花都可以点燃的速度的最小值 ...

  5. NOIP2017 Day1 T3 逛公园

    NOIP2017 Day1 T3 更好的阅读体验 题目描述 策策同学特别喜欢逛公园.公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,\(N\)号点 ...

  6. 【NOIP2015提高组】 Day1 T3 斗地主

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

  7. 洛谷P2668 斗地主==codevs 4610 斗地主[NOIP 2015 day1 T3]

    P2668 斗地主 326通过 2.6K提交 题目提供者洛谷OnlineJudge 标签搜索/枚举NOIp提高组2015 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 出现未知错误是说梗啊 ...

  8. 斗地主[NOIP2015]

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

  9. 洛谷noip 模拟赛 day1 T3

    T7983 大芳的逆行板载 题目背景 大芳有一个不太好的习惯:在车里养青蛙.青蛙在一个n厘米(11n毫米s)的Van♂杆子上跳来跳去.她时常盯着青蛙看,以至于突然逆行不得不开始躲交叉弹.有一天他突发奇 ...

随机推荐

  1. NoSQL发展简史、粗略分类及选择

    这里对近来看的部分NoSQL资料做一个汇总记录,主要包括简史.粗略分类及数据库选择的考虑事项.NoSQL常见的解释是“non-relational”,有时也称作Not Only SQL.     1. ...

  2. 瀑布流,五大插件一个都不少Bootstrap+jQuery+Masonry+imagesLoaded+Lightbox!

    纯手工打造漂亮的瀑布流,五大插件一个都不少Bootstrap+jQuery+Masonry+imagesLoaded+Lightbox!   前两天写的文章<纯手工打造漂亮的垂直时间轴,使用最简 ...

  3. linux前四天学习笔记

    以下是在linux培训机构所学的内容,感觉比较乱 MySQL学习笔记MySQL的安装 linux中的超级管理员rootaixocm vnc的退出: F8 MySQL的特点.优点:关系型开源.免费c++ ...

  4. 性能测试工具比较:LoadRunner vs JMeter - 测试结果数据比较

    对web请求(HTTP/HTML)进行性能测试,确认请求响应时间.分别使用Loadrunner和JMeter进行测试,比较测试结果. 1.LoadRunner测试web请求响应时间 1.1  编制(录 ...

  5. 使用SmsManager服务群发短信

    SmsManager是Android提供的一个非常常见的服务,SmsManager提供了一系列sendXxxMessage()方法用于发送短信,不过短信通常都是普通文本,调用sendTextMessa ...

  6. erlang集成开发环境搭配配置出现的问题

    问题:Unable to create the selected preference page.  com.avaya.exvantage.ui.interfaces.eclipse.plugin  ...

  7. jquery表格提交验证

    在表格中的验证 1.body中的内容 <form action="http://www.qq.com" id="form1"><table w ...

  8. this和$(this)

    this指的是javascript对象而$(this)就是就jquery对象 jQuery.prototype.test=function(){ this.css("color", ...

  9. 蓝桥杯 C语言 入门训练 Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

  10. 【repost】js字符串函数

    JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...