#S0128. 【22NOIP提高组】喵了个喵(meow)
题目描述
小 E 喜欢上了一款叫做《喵了个喵》的游戏。这个游戏有一个牌堆和 个可以从栈底删除元素的栈,任务是要通过游戏规则将所有的卡牌消去。开始时牌堆中有 张卡牌,从上到下的图案分别是 , , · · · , 。所有的卡牌一共有 种图案,从 到编号。牌堆中每一种图案的卡牌都有偶数张。开始时所有的栈都是空的。这个游戏有两种操作: • 选择一个栈,将牌堆顶上的卡牌放入栈的顶部。如果这么操作后,这个栈最上方的两张牌有相同的图案,则会自动将这两张牌消去。 • 选择两个不同的栈,如果这两个栈栈底的卡牌有相同的图案,则可以将这两张牌消去,原来在栈底上方的卡牌会成为新的栈底。如果不同,则什么也不会做。 这个游戏一共有 关,小 E 一直无法通关。请你帮小 E 设计一下游戏方案,即对于游戏的每一关,给出相应的操作序列使得小 E 可以把所有的卡牌消去。
输入
第一行包含一个正整数 ,表示数据组数。 接下来一共 组数据,在每组数据中: 第一行包含三个正整数 , , ,分别表示栈的个数、卡牌的个数、卡牌上图案的种类。 第二行包含 个正整数,分别表示 , , · · · , ,分别从上到下表示牌堆中卡牌的图案。 输入数据保证有解。
输出
对于每一组数据,输出若干行。 其中第一行包含一个正整数 ,表示操作的次数。你需要保证 。 接下来 行,每行包含两个或三个正整数,整数之间用一个空格隔开。 若为两个整数 1\ s,则进行一次第一个操作并选择栈 s。 若为三个整数 2\ s_1\ s_2,则进行一次第二个操作并选择栈 和 。 你需要保证 ,且 。
输入样例
1
2 4 2
1 2 1 2
输出样例
5
1 1
1 1
1 2
2 1 2
1 1
提示
【数据范围】
设 为所有 组数据中 的总和。
对于所有数据,保证 ,,。
| 测试点 | T = | n | k = | m ≤ |
| 1 ∼ 3 | 1001 | ≤ 300 | 2n − 2 | 无限制 |
| 4 ∼ 6 | 1002 | = 2 | 2n-1 | |
| 7 ∼ 10 | 3 | = 3 | 14 | |
| 11 ∼ 14 | 1004 | 无限制 | ||
| 15 ∼ 20 | 1005 | ≤ 300 |
评测数据说明
本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共5个测试点,非原站或官方原始数据。总分100分。