#Lutece1603. BanG Dreamer
BanG Dreamer
Migrated from Lutece 1603 BanG Dreamer
All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.
Description
AutSky_JadeK 发现网上很多人沉迷邦邦手游无法自拔,他想知道这有什么好玩的。
这天,他发现每张邦邦的卡片有一个整数的稀有度,它们排成了一个序列。
他想知道,你最少能将这个卡片序列不重复,不遗漏地划分成多少个堆型子序列。
一个序列是一个“堆型序列”当且仅当,存在一个有个结点的二叉树,其每个结点与该序列的元素一一对应,
而且对于该二叉树的每个非根结点和它的父节点,满足并且。
子序列的定义是,其是某个序列删除掉任意数量元素之后,所剩下的部分。并且不改变其原有的顺序。
Input
输入包含多组数据,第一行是总数据组数,
每组数据的第一行是一个整数,代表卡片数,
每组数据的第二行是这个卡片序列的稀有度。
Output
对于每组数据,先输出一行,包含一个整数,代表最少的堆型子序列数。
接下来行,第行先输出一个整数,代表该堆型子序列的长度,
然后在同一行输出递增的个整数,的含义是第个堆型子序列里第个元素在原序列里的下标(从开始)。
Samples
4
4
1 2 3 4
4
2 4 3 1
4
1 1 1 1
5
3 2 1 4 1
1
4 1 2 3 4
2
3 1 2 3
1 4
1
4 1 2 3 4
3
2 1 4
1 2
2 3 5
Note
,
所有大小的总和不超过,
。
Resources
17暑假前集训-数据结构专题 By AutSky_JadeK - 17浙江省赛 zoj 3963