#CF2195B. Heapify 1
Heapify 1
题目描述
给定一个长度为 的排列 。
你可以进行如下操作任意次(可以为零次):
- 选择一个下标 (),交换 和 。
例如,当 时,你可以交换 和 使其变为 ,但你不能交换 和 。
请你判断,是否可以通过若干次上述操作将序列 排成升序。
一个长度为 的排列是一个由 到 的 个互不相同的整数组成的数组。例如, 是一个排列,但 不是排列( 在数组中出现了两次), 也不是排列( 但数组中有 )。
输入格式
每组测试数据包含多个测试用例。第一行包含测试用例组数 ()。接下来是各组测试用例的描述。
每个测试用例的第一行包含一个整数 ()。
第二行包含 个不同的整数 ()。
保证所有测试用例中 的总和不超过 。
输出格式
如果 可以升序排列,则输出一行 “YES”。否则输出一行 “NO”。
输出答案时不区分大小写。例如,字符串 "yEs"、"yes" 和 "Yes" 都被视为肯定回答。
样例
2
5
1 4 3 2 5
5
1 4 2 3 5
YES
NO
样例说明
在第一个测试用例中,。你可以通过交换 和 将 排成升序。因此答案为 “YES”。
在第二个测试用例中,。无论如何都无法排成升序。因此答案为 “NO”。
由 ChatGPT 5 翻译
来源
Codeforces 2195B,英文题名 Heapify 1。