P13079 [NOISG 2019] Shuffle【交互题待配置】

题目描述

Lim Li 非常喜欢动漫,最近她在 Amazon 购买了一整季的《干物妹小埋》。这季共有 $N$ 集,每集刻录在一张光盘上,光盘编号为 $1$ 到 $N$,每集的集数也是 $1$ 到 $N$。 然而,Lim Li 发现由于生产问题,光盘编号与剧集集数不对应!Amazon 告诉她,剧集只是被打乱顺序,所有剧集都在,没有缺失。 为了避免剧透,Lim Li 不愿自己播放光盘来确认剧集顺序。于是她决定请朋友 Rar the Cat 帮忙。具体流程如下: - Lim Li 将 $N$ 张光盘分为 $B$ 个盒子,每个盒子装 $K$ 张光盘($N = B \times K$)。 - 这些盒子寄给 Rar。在运输过程中,盒子之间的顺序和每个盒子内部光盘的顺序可能会被打乱。 - Rar 接收到盒子后,会播放每张光盘,并记录下盒子内各张光盘对应的剧集集数,然后将每个盒子的结果分别写在 $B$ 张纸上寄回给 Lim Li。 - 所有光盘最终被寄回给 Lim Li。 整个过程最多允许进行 $Q$ 次。Rar 如果不耐烦就不再帮忙。 你的任务是,帮助 Lim Li 在尽量少的查询次数内,确定每张光盘上的剧集集数。 本题为交互题,请实现以下函数: - C++: `vector solve(int N, int B, int K, int Q, int ST)` - ~~Java: `public int[] solve(int N, int B, int K, int Q, int ST)`~~ 你可以调用如下交互函数: - C++: `vector shuffle(vector boxes)` - ~~Java: `public static int[][] shuffle(int[][] boxes)`~~ 参数 `boxes` 是 $B$ 个数组,每个数组包含 $K$ 个整数,表示 Lim Li 寄出的光盘编号分组。 返回值为 $B$ 个数组,每个数组 $K$ 个整数,表示收到盒子后,每张光盘的剧集集数。 注意: - `boxes` 传入参数不会被修改。 - 超过 $Q$ 次调用或参数非法,判定为 Wrong Answer。

输入格式

所有必要信息通过函数参数提供。

输出格式

程序通过返回值完成答案,无需额外输出。

说明/提示

【样例解释】 假设 $N = 6$,$B = 3$,$K = 2$,$Q = 100$,剧集顺序为 $[3, 1, 4, 5, 2, 6]$。 调用 `solve(6, 3, 2, 100, 2)`。 一次可能的交互: - 调用 `shuffle([[1, 2], [3, 4], [5, 6]])`,返回 `[[6, 2], [5, 4], [3, 1]]`。 - 调用 `shuffle([[2, 6], [3, 1], [5, 4]])`,返回 `[[6, 1], [2, 5], [4, 3]]`。 - 调用 `shuffle([[6, 5], [4, 2], [3, 1]])`,返回 `[[5, 1], [3, 4], [2, 6]]`。 最终确定顺序为 $[3, 4, 1, 5, 2, 6]$,输出该数组即为正确答案。 【数据范围】 - $B, K \geq 2$ - $N \geq 6$ - $N = B \times K$ | 子任务编号 | 分值 | 额外限制 | | :---: | :---: | :---: | | $1$ | $2$ | $N = 6,\ B = 2,\ K = 3,\ Q = 100$ | | $2$ | $3$ | $N = 6,\ B = 3,\ K = 2,\ Q = 100$ | | $3$ | $12$ | $N \leq 1000,\ Q = 12$,盒子顺序保持不变 | | $4$ | $16$ | $N \leq 1000,\ K = 2,\ Q = 4$ | | $5$ | $15$ | $N \leq 1000,\ B = 2,\ Q = 12$ | | $6$ | $52$ | $N \leq 1000,\ Q = 2000,\ B,K > 2$,具体见评分规则 | 【评分规则】 对于子任务 6,根据查询次数 $q$ 计分: - $q > 2000$,得 $0$ 分; - $500 < q \leq 2000$,得 $8$ 分; - $50 < q \leq 500$,得 $17$ 分; - $9 < q \leq 50$,得 $22 + 30 \times \left(\dfrac{50 - q}{41}\right)^2$ 分; - $q \leq 9$,得 $52$ 分。 【测试说明】 官方提供裁判程序、头文件、模板与样例测试数据。请严格使用官方提供的测试脚本。