P12551 [UOI 2025] Simple Task

题目描述

我们称一个非空的正整数序列为*奇异*序列,如果其元素之和是一个质数。 给定一个长度为 $n$ 的数组 $a$,**其中的元素均为质数**。同时给定一个整数 $k$。 请将数组 $a$ 分割成 $k$ 个**非空**子序列$^1$,使得: - 数组 $a$ 的每个元素恰好属于其中一个子序列; - 在这些子序列中,*奇异*序列的数量尽可能少。 本题每个测试包含多组输入数据,你需要分别独立处理每组数据。 **注意:本题没有"无额外限制"的评分 Subtask。**

输入格式

第一行包含一个整数 $T$ $(1\le T\le 10^5)$ —— 输入数据的组数。接下来是各组数据的描述。 每组数据的第一行包含两个整数 $n$, $k$ $(1 \le k \le n \le 10^5)$ —— 数组 $a$ 的长度和需要分割成的子序列数量。 每组数据的第二行包含 $n$ 个质数 $a_1, a_2, \ldots, a_n$ $(2\le a_i\le 10^5, a_i\le a_{i+1})$ —— 数组 $a$ 的元素。 保证单个测试中所有数据的 $n$ 之和不超过 $10^5$。

输出格式

对于每组数据,按照以下格式输出最优分割方案: - 第一行输出一个整数 $m$ —— 分割后得到的*奇异*序列数量; - 接下来的 $k$ 行,每行输出整数 $s_i$ 和 $b_1, b_2, \ldots, b_{s_i}$ $(1\le s_i\le n)$ —— 对应子序列的元素个数及其元素。 子序列及其元素的输出顺序可以任意。 如果存在多个正确答案,输出任意一个即可。

说明/提示

$^1$ 序列 $c$ 称为数组 $b$ 的子序列,如果可以通过从数组 $b$ 中删除若干元素(可能为零个)来得到序列 $c$。 ### 评分标准 - ($2$ 分):$T \leq 20$,$k=1$; - ($5$ 分):$n \leq 4$,所有 $1\le i\le n$ 满足 $a_i \leq 10^4$; - ($8$ 分):$T \leq 20$,$n \leq 10$,所有 $1\le i\le n$ 满足 $a_i \leq 10^4$; - ($4$ 分):$n$ 为偶数,所有 $1\le i\le n$ 满足 $a_i > 2$; - ($18$ 分):$n$ 为奇数,所有 $1\le i\le n$ 满足 $a_i > 2$; - ($10$ 分):$2\cdot k \ge n + 1$; - ($29$ 分):$n$ 为偶数; - ($24$ 分):$n$ 为奇数。 翻译由 DeepSeek V3 完成