牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的 A 到 K 加上大小王的共
54
54
54 张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:
3
<
4
<
5
<
6
<
7
<
8
<
9
<
10
<
J
<
Q
<
K
<
A
<
2
<
3<4<5<6<7<8<9<10 现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。请你帮他解决这个问题。 需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。 具体规则如下: ** 在此题中认为两个王不能组成对子牌 ** 第一行包含用空格隔开的
2
2
2 个正整数
T
T
T 和
n
n
n,表示手牌的组数以及每组手牌的张数。 接下来
T
T
T 组数据,每组数据
n
n
n 行,每行一个非负整数对
a
i
b
i
a_ib_i
aibi 表示一张牌,其中
a
i
a_i
ai 示牌的数码,
b
i
b_i
bi 表示牌的花色,中间用空格隔开。特别的,我们用
1
1
1 来表示数码
A
A
A,
11
11
11 表示数码
J
J
J,
12
12
12 表示数码
Q
Q
Q,
13
13
13 表示数码
K
K
K;黑桃、红心、梅花、方片分别用
1
−
4
1-4
1−4 来表示;小王的表示方法为
01
01
01,大王的表示方法为
02
02
02。 共
T
T
T 行,每行一个整数,表示打光第
i
i
i 手牌的最少次数。 共有
1
1
1 组手牌,包含
8
8
8 张牌:方片
7
7
7,方片
8
8
8,黑桃
9
9
9,方片
10
10
10,黑桃
J
J
J,黑桃
5
5
5,方片
A
A
A 以及黑桃
A
A
A。可以通过打单顺子(方片
7
7
7,方片
8
8
8,黑桃
9
9
9,方片
10
10
10,黑桃 J),单张牌(黑桃
5
5
5)以及对子牌(黑桃
A
A
A 以及方片
A
A
A)在
3
3
3 次内打光。 对于前
20
20
20 个测试点, 我们约定手牌组数
T
T
T 与张数
n
n
n 的规模如下: 数据不保证所有的手牌都是随机生成的。 可以发现,除了顺子,其它的出牌规则都和点数无关,只与同点数的牌数有关。1 8
7 4
8 4
9 1
10 4
11 1
5 1
1 4
1 1
样例输出 #1
3
样例 #2
样例输入 #2
1 17
12 3
4 3
2 3
5 4
10 2
3 3
12 2
0 1
1 3
10 1
6 2
12 1
11 3
5 2
12 4
2 2
7 2
样例输出 #2
6
提示
样例 1 说明
下面进入正文
所以可以先暴力枚举要出哪些顺子,然后每出完一个顺子后手牌的情况处理成
b
4
b_{4}
b4 的形式,表示牌数为
1
1
1~
4
4
4的点数有多少个,然后进行
d
f
s
dfs
dfs。
(为了方便,将A接在14,注意2不能顺)
d
f
s
(
s
,
t
,
j
,
z
)
dfs(s,t,j,z)
dfs(s,t,j,z)表示
s
s
s组的牌数为
1
1
1,有
t
t
t组牌数为
2
2
2,有
j
j
j组牌数为
3
3
3,有
z
z
z组牌数为
4
4
4的情况出完手牌的最小步数。(可以记忆化搜索)
然后再
d
f
s
dfs
dfs讨论下【单打】【拆牌】【带牌】三种特殊情况,对应转移就可以了。(数据小,写多暴力都没问题)
双王在进入
d
f
s
dfs
dfs前特殊处理:有双王就考虑多一种当炸弹打的情况,然后直接将王当做单牌进入
d
f
s
dfs
dfs#include


![洛谷 P2540 [NOIP2015 提高组] 斗地主 加强版 题解 洛谷 P2540 [NOIP2015 提高组] 斗地主 加强版 题解](http://www.mshxw.com/aiimages/31/983269.png)
