CF2103C.Median Splits
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
数组 b1,b2,…bm 的中位数记作 med(b1,b2,…,bm),定义为数组 b 中第 ⌈2m⌉ 小的元素。
给定一个整数数组 a1,a2,…,an 和一个整数 k。你需要判断是否存在一对下标 1≤l<r<n 满足:
med(med(a1,a2…al),med(al+1,al+2…ar),med(ar+1,ar+2…an))≤k.
换句话说,判断是否可以将数组分割为三个连续的子数组,使得这三个子数组中位数的中位数小于或等于 k。
输入格式
每个测试包含多个测试用例。第一行输入测试用例数量 t(1≤t≤104)。接下来是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(3≤n≤2⋅105,1≤k≤109)——数组 a 的长度和常数 k。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)——数组 a 的元素。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,如果存在满足条件的分割,输出 "YES",否则输出 "NO"。
答案可以以任意大小写形式输出(例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答)。
输入输出样例
输入#1
6 3 2 3 2 1 3 1 3 2 1 6 3 8 5 3 1 6 4 8 7 10 7 12 16 3 15 6 11 6 8 7 11 12 4 9 17 3 500000000 1000 1000000000 1000
输出#1
YES NO NO YES YES YES
说明/提示
在第一个和第二个测试用例中,唯一可能的分割方式是将数组分为 [3]、[2]、[1]。它们的中位数分别是 3、2 和 1。这三个中位数的中位数是 med(3,2,1)=2。因此,第一个测试用例的答案是 "YES"(因为 2≤2),而第二个测试用例的答案是 "NO"(因为 2>1)。
在第三个测试用例中,可以证明不存在满足条件的分割。
在第四个测试用例中,一个满足条件的分割是 [10,7]、[12,16,3,15]、[6,11]。子数组的中位数分别是 7、12 和 6。这三个中位数的中位数是 med(7,12,6)=7≤k,因此该分割满足条件。
在第五个测试用例中,一个满足条件的分割是 [7,11]、[12,4]、[9,17]。子数组的中位数分别是 7、4 和 9。这三个中位数的中位数是 med(7,4,9)=7≤k,因此该分割满足条件。
在第六个测试用例中,唯一可能的分割方式是将数组分为 [1000]、[109]、[1000]。子数组的中位数分别是 1000、109 和 1000。这三个中位数的中位数是 med(1000,109,1000)=1000≤k,因此该分割满足条件。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?