CFCF2195B.Heapify 1
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的排列 a。
你可以进行如下操作任意次(可以为零次):
- 选择一个下标 i(1≤i≤2n),交换 ai 和 a2i。
例如,当 a=[1,4,2,3,5] 时,你可以交换 a2 和 a4 使其变为 [1,3,2,4,5],但你不能交换 a2 和 a3。
请你判断,是否可以通过若干次上述操作将序列 a 排成升序。
一个长度为 n 的排列是一个由 1 到 n 的 n 个互不相同的整数组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(2 在数组中出现了两次),[1,3,4] 也不是排列(n=3 但数组中有 4)。
输入格式
每组测试数据包含多个测试用例。第一行包含测试用例组数 t(1≤t≤104)。接下来是各组测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)。
第二行包含 n 个不同的整数 a1,a2,…,an(1≤ai≤n)。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
如果 a 可以升序排列,则输出一行 “YES”。否则输出一行 “NO”。
输出答案时不区分大小写。例如,字符串 "yEs"、"yes" 和 "Yes" 都被视为肯定回答。
输入输出样例
输入#1
2 5 1 4 3 2 5 5 1 4 2 3 5
输出#1
YES NO
说明/提示
在第一个测试用例中,a=[1,4,3,2,5]。你可以通过交换 a2 和 a4 将 a 排成升序。因此答案为 “YES”。
在第二个测试用例中,a=[1,4,2,3,5]。无论如何都无法排成升序。因此答案为 “NO”。