#SY01. 丝绸之路货物整理
丝绸之路货物整理
题目背景
在古老的丝绸之路上,商队穿越沙漠与绿洲,将珍贵的货物从东方运往西方。你是一位经验丰富的商队管理者,负责在驿站中整理货物的装载顺序。
每件货物都有一个编号(从 到 ),代表其重要程度。为了便于在终点城市卸货,货物需要按照编号从小到大的顺序排列在驼队中。
题目描述
驼队中有 件货物,当前的排列顺序为 。
根据丝绸之路驿站的古老规矩,你可以进行如下操作任意次(可以为零次):
- 选择驼队中第 个位置(),将该位置的货物与第 个位置的货物互换。
这个规矩源于驼队的特殊编队方式:驼队按照完全二叉树的结构排列,每个位置 的"左侧关联位置"是 ,只有这两个位置的货物可以互换。
例如,当 时,你可以交换第 个位置和第 个位置的货物,使其变为 ,但你不能交换第 个位置和第 个位置的货物。
请你判断,是否可以通过若干次上述操作将货物序列 排成升序(即按照编号从小到大排列)。
注: 一个长度为 的排列是一个由 到 的 个互不相同的整数组成的数组。例如, 是一个排列,但 不是排列( 在数组中出现了两次), 也不是排列( 但数组中有 )。
输入格式
每组测试数据包含多个商队的货物整理任务。第一行包含任务组数 ()。接下来是各组任务的描述。
每个任务的第一行包含一个整数 (),表示驼队中货物的数量。
第二行包含 个不同的整数 (),表示当前货物的排列顺序。
保证所有任务中 的总和不超过 。
输出格式
对于每个任务,如果可以通过驿站规矩将货物排成升序,则输出一行 “YES”(表示可以完成整理)。否则输出一行 “NO”(表示无法完成整理)。
输出答案时不区分大小写。例如,字符串 “yEs”、”yes” 和 “Yes” 都被视为肯定回答。
输入输出样例 #1
输入 #1
2
5
1 4 3 2 5
5
1 4 2 3 5
输出 #1
YES
NO
说明/提示
在第一个任务中,驼队的货物排列为 。你可以在驿站中交换第 个位置和第 个位置的货物(即交换编号为 和 的货物),使货物排列变为 ,达到升序。因此答案为 “YES”。
在第二个任务中,驼队的货物排列为 。无论如何按照驿站规矩进行交换,都无法将货物排成升序。因此答案为 “NO”。
故事背景补充: 这个驿站规矩源于古代丝绸之路上的智慧。商队按照完全二叉树的方式编队,每头骆驼都有其固定的”关联伙伴”。这种编队方式既能保证队伍的稳定性,又能在必要时快速调整货物顺序,是千年来商队管理者总结出的宝贵经验。