luogu#P6454. 麻将 加强版

麻将 加强版

题目背景

此题我本来是想出公开赛的,没想到撞题了。

题面是我自己撰写的,与原题不同。

此题题意与 P4050 大致相同,有少许不同且数据范围有所更改


小 A 喜欢打麻将。

题目描述

小 A 找到了一副奇怪的麻将牌:只有一种 1,2,,n1,2,\cdots,n 的数牌,且每种牌都有无穷多张

定义「雀头」为两张一样的牌(如 2,22,27,77,7),「刻子」为三张一样的牌(如 1,1,11,1,14,4,44,4,4),「顺子」为三张序数相邻的牌(如 1,2,31,2,39,10,119,10,11,注意 11nn 不相邻)。「顺子」与「刻子」统称「面子」。

假如你能把你的手牌分为若干组「雀头」(可以相同),或者分为若干组「面子」(可以相同)以及一组「雀头」,那么你就可以「和牌」。

假如某副手牌加上某张牌后可以「和牌」,则称这副手牌「听」这张牌。

现在小 A 随意摸了 kk 张牌,他想知道他「听」哪些牌。

输入格式

第一行两个正整数 n,kn,k,分别表示牌的范围和小 A 手上牌的张数。

接下来一行 kk 个整数 a1,a2,,aka_1,a_2,\cdots,a_k 给出小 A 的手牌,每个数表示小 A 手上的一张牌。不保证按升序给出。

输出格式

第一行一个正整数 tt,表示小 A「听」的牌的种数。

接下来一行 tt 个正整数,表示小 A「听」哪些牌。请按照升序输出。

9 13
1 1 1 2 3 4 5 6 7 8 9 9 9

9
1 2 3 4 5 6 7 8 9
9 13
1 1 1 1 3 3 3 3 5 5 5 5 7

1
7

提示

样例解释

样例一解释:这种牌型叫做纯正九莲宝灯折寿警告
具体划分方式:

1 111|123|456|789|99
2 111|345|678|999|22
3 123|345|678|999|11
4 111|234|456|789|99
5 111|234|678|999|55
6 123|456|678|999|11
7 111|234|567|789|99
8 111|234|567|999|88
9 123|456|789|999|11

样例二解释:很显然这套牌差一张 77 即可分为 1,1;1,1;3,3;3,3;5,5;5,5;7,71,1;1,1;3,3;3,3;5,5;5,5;7,7 共计 77 组「雀头」和牌。

数据范围

本题采用捆绑测试。

  • Subtask  1(5  pts)\text{Subtask\;1(5\;pts)}k=1k=1
  • Subtask  2(5  pts)\text{Subtask\;2(5\;pts)}n=1n=1
  • Subtask  3(10  pts)\text{Subtask\;3(10\;pts)}n=9n=9
  • Subtask  4(15  pts)\text{Subtask\;4(15\;pts)}k100k\le 100
  • Subtask  5(15  pts)\text{Subtask\;5(15\;pts)}n100n\le 100
  • Subtask  6(50  pts)\text{Subtask\;6(50\;pts)}:无特殊限制。

对于所有数据,1n5×1031\le n\le 5\times10^31k1051\le k\le 10^51ain1\le a_i\le nk1(mod6)k\equiv 1\pmod 6