CF2032B.Medians
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个数组 a=[1,2,…,n],其中 n 是奇数,以及一个整数 k。
你的任务是选择一个奇正整数 m,并将 a 分成 m 个子数组 † b1,b2,…,bm,使得:
- 数组 a 的每个元素恰好属于一个子数组。
- 对于所有 1≤i≤m,∣bi∣ 是奇数,即每个子数组的长度为奇数。
- median([median(b1),median(b2),…,median(bm)])=k,即所有子数组中位数组成的数组的中位数等于 k。median(c) 表示数组 c 的中位数。
† 数组 a 长度为 n 的子数组是 [al,al+1,…,ar],其中 1≤l≤r≤n。
‡ 奇数长度数组的中位数是排序后位于中间的元素。例如:median([1,2,5,4,3])=3,median([3,2,1])=2,median([2,1,2,1,2,2,2])=2。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤5000)——测试用例数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(1≤k≤n<2⋅105,n 为奇数)——数组 a 的长度和所有子数组中位数组成的数组的目标中位数。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例:
- 如果不存在合适的划分,输出一行 −1。
- 否则,第一行输出一个奇数 m(1≤m≤n),第二行输出 m 个不同的整数 p1,p2,…,pm(1=p1<p2<p3<…<pm≤n),表示每个子数组的左端点。
具体来说,对于一个合法答案 [p1,p2,…,pm]:
- b1=[ap1,ap1+1,…,ap2−1]
- b2=[ap2,ap2+1,…,ap3−1]
- …
- bm=[apm,apm+1,…,an]
如果有多组解,输出任意一组均可。
输入输出样例
输入#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=1,b1=[1]。显然 median([median([1])])=median([1])=1。
在第二个测试用例中,给定的划分为 m=3,且:
- b1=[1]
- b2=[2]
- b3=[3]
因此,median([median([1]),median([2]),median([3])])=median([1,2,3])=2。
在第三个测试用例中,对于 k=3,不存在合法划分。
在第四个测试用例中,给定的划分为 m=5,且:
- b1=[1,2,3]
- b2=[4,5,6]
- b3=[7,8,9]
- b4=[10,11,12]
- b5=[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。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?