梦想从几时开始,命运在何处终结?
有一个长度为 的整数序列 。
你的任务是判断是否可以将其划分为 的倍数个非空子序列,使得每个元素在恰一个子序列中出现,同时每个子序列均以 的倍数开头、 的倍数结尾,并且长度也为 的倍数。若能划分,求出任意一个方案。
序列 的一个子序列是指将任意多个(可以为 个)元素删除后,将其他元素按照原序列中的顺序拼接而成的序列。例如,序列 、序列 和序列 均为序列 的子序列,但 不是。
输入的第一行包含一个整数 —— 表示子任务编号(与「数据范围与提示」中编号相同,样例的子任务编号为 )。
第二行包含两个空格分隔的正整数 —— 序列 的长度和 的值。
第三行包含 个空格分隔的正整数 —— 依次表示序列 的元素。
若有解,则第一行输出 Yes
,否则第一行输出 No
。
若有解则按以下格式输出任意一个划分方案:
第二行输出一个整数 表示划分成了 个子序列,满足 且 是 的倍数;
接下来 行每行描述一个子序列:
第 行第一个整数 表示第 个子序列的长度,满足 且 是 的倍数。
接下来 个整数 表示这个子序列中元素的下标。满足 (即下标单调递增)且 和 是 的倍数。
另外, 中每个数在 中出现且仅出现一次。
0
6 2
2 4 1 3 6 8
Yes
2
2 1 5
4 2 3 4 6
划分为 和 两个子序列满足条件。
0
6 2
2 4 6 1 3 5
No
以 的倍数结尾什么的最讨厌了 (– ‸– )
0
6 2
2 1 2 2 1 2
Yes
2
4 1 2 5 6
2 3 4
0
15 3
3 1 1 1 1 3 3 1 3 3 1 1 1 1 3
Yes
3
6 1 2 3 4 5 10
6 6 11 12 13 14 15
3 7 8 9
请从页面上方的附加文件中下载。
对于所有数据,有 。
Subtask # | 分值 | 的限制 | 的限制 | 特殊限制 |
---|---|---|---|---|
1 | - | |||
2 | ||||
3 | ||||
4 | ||||
5 | ||||
6 | 是 的倍数 | |||
7 | 存在方案使得 和 属于同一子序列 | |||
8 | - | |||
9 |