CF2032B.Medians

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个数组 a=[1,2,…,n]a = [1, 2, \ldots, n],其中 nn 是奇数,以及一个整数 kk。

你的任务是选择一个奇正整数 mm,并将 aa 分成 mm 个子数组 †^{\dagger} b1,b2,…,bmb_1, b_2, \ldots, b_m,使得:

  • 数组 aa 的每个元素恰好属于一个子数组。
  • 对于所有 1≤i≤m1 \le i \le m,∣bi∣|b_i| 是奇数,即每个子数组的长度为奇数。
  • median⁡([median⁡(b1),median⁡(b2),…,median⁡(bm)])=k\operatorname{median}([\operatorname{median}(b_1), \operatorname{median}(b_2), \ldots, \operatorname{median}(b_m)]) = k,即所有子数组中位数组成的数组的中位数等于 kk。median⁡(c)\operatorname{median}(c) 表示数组 cc 的中位数。

†^{\dagger} 数组 aa 长度为 nn 的子数组是 [al,al+1,…,ar][a_l, a_{l+1}, \ldots, a_r],其中 1≤l≤r≤n1 \le l \le r \le n。

‡^{\ddagger} 奇数长度数组的中位数是排序后位于中间的元素。例如:median⁡([1,2,5,4,3])=3\operatorname{median}([1,2,5,4,3]) = 3,median⁡([3,2,1])=2\operatorname{median}([3,2,1]) = 2,median⁡([2,1,2,1,2,2,2])=2\operatorname{median}([2,1,2,1,2,2,2]) = 2。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤50001 \le t \le 5000)——测试用例数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 kk(1≤k≤n<2⋅1051 \le k \le n < 2 \cdot 10^5,nn 为奇数)——数组 aa 的长度和所有子数组中位数组成的数组的目标中位数。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例:

  • 如果不存在合适的划分,输出一行 −1-1。
  • 否则,第一行输出一个奇数 mm(1≤m≤n1 \le m \le n),第二行输出 mm 个不同的整数 p1,p2,…,pmp_1, p_2, \ldots, p_m(1=p1<p2<p3<…<pm≤n1 = p_1 < p_2 < p_3 < \ldots < p_m \le n),表示每个子数组的左端点。

具体来说,对于一个合法答案 [p1,p2,…,pm][p_1, p_2, \ldots, p_m]:

  • b1=[ap1,ap1+1,…,ap2−1]b_1 = [a_{p_1}, a_{p_1 + 1}, \ldots, a_{p_2 - 1}]
  • b2=[ap2,ap2+1,…,ap3−1]b_2 = [a_{p_2}, a_{p_2 + 1}, \ldots, a_{p_3 - 1}]
  • …\ldots
  • bm=[apm,apm+1,…,an]b_m = [a_{p_m}, a_{p_m + 1}, \ldots, a_n]

如果有多组解,输出任意一组均可。

输入输出样例

  • 输入#1

    4
    1 1
    3 2
    3 3
    15 8

    输出#1

    1
    1
    3
    1 2 3
    -1
    5
    1 4 7 10 13

说明/提示

在第一个测试用例中,给定的划分为 m=1m = 1,b1=[1]b_1 = [1]。显然 median⁡([median⁡([1])])=median⁡([1])=1\operatorname{median}([\operatorname{median}([1])]) = \operatorname{median}([1]) = 1。

在第二个测试用例中,给定的划分为 m=3m = 3,且:

  • b1=[1]b_1 = [1]
  • b2=[2]b_2 = [2]
  • b3=[3]b_3 = [3]

因此,median⁡([median⁡([1]),median⁡([2]),median⁡([3])])=median⁡([1,2,3])=2\operatorname{median}([\operatorname{median}([1]), \operatorname{median}([2]), \operatorname{median}([3])]) = \operatorname{median}([1, 2, 3]) = 2。

在第三个测试用例中,对于 k=3k = 3,不存在合法划分。

在第四个测试用例中,给定的划分为 m=5m = 5,且:

  • b1=[1,2,3]b_1 = [1, 2, 3]
  • b2=[4,5,6]b_2 = [4, 5, 6]
  • b3=[7,8,9]b_3 = [7, 8, 9]
  • b4=[10,11,12]b_4 = [10, 11, 12]
  • b5=[13,14,15]b_5 = [13, 14, 15]

因此,median⁡([median⁡([1,2,3]),median⁡([4,5,6]),median⁡([7,8,9]),median⁡([10,11,12]),median⁡([13,14,15])])=median⁡([2,5,8,11,14])=8\operatorname{median}([\operatorname{median}([1, 2, 3]), \operatorname{median}([4, 5, 6]), \operatorname{median}([7, 8, 9]), \operatorname{median}([10, 11, 12]), \operatorname{median}([13, 14, 15])]) = \operatorname{median}([2, 5, 8, 11, 14]) = 8。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页