AT_wtf22_day1_b.Non-Overlapping Swaps
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个 $ (1,2,\cdots,N) $ 的排列 $ P=(P_1,P_2,\cdots,P_N) $。
请你求出一组整数对序列 $ ((l_1,r_1),(l_2,r_2),\cdots,(l_k,r_k)) $,使其满足以下所有条件:
- 序列长度 $ k $ 满足 $ 0\leq k\leq N-1 $。
- $ 1\leq l_i\leq r_i\leq N ( 1\leq i\leq k $)。
- 对于每个 $ 1\leq i\leq k-1 $,有 $ r_{i+1}\leq l_i $ 或 $ r_i\leq l_{i+1} $。
- 经过以下操作 $ k $ 次后,$ P $ 能变为升序排列:
- 第 $ i $ 次操作:交换 $ P_{l_i} $ 和 $ P_{r_i} $ 的值。如果 $ l_i=r_i $,则什么也不做。
在本题的约束下,必然存在满足条件的序列。
对于每个输入文件中的 $ T $ 个测试用例,请输出答案。
输入格式
输入以如下格式从标准输入读入:
$ T $ $ case_1 $ $ case_2 $ $ \vdots $ $ case_T $
每个测试用例 $ case_i $ 的格式如下:
$ N $ $ P_1 $ $ P_2 $ $ \cdots $ $ P_N $
输出格式
对于每个测试用例,输出如下格式的答案:
$ k $ $ l_1 $ $ r_1 $ $ l_2 $ $ r_2 $ $ \vdots $ $ l_k $ $ r_k $
如果有多组解,输出任意一组都视为正确。
输入输出样例
输入#1
3 3 2 3 1 4 4 3 2 1 1 1
输出#1
2 2 3 1 2 3 1 4 1 1 2 3 0
说明/提示
约束
- $ 1\leq T\leq 250000 $
- $ 1\leq N\leq 250000 $
- $ P=(P_1,P_2,\cdots,P_N) $ 是 $ (1,2,\cdots,N) $ 的一个排列
- 每个输入文件中所有 $ N $ 的总和不超过 $ 250000 $
- 输入的所有值均为整数
样例解释 1
以第一个测试用例为例。该输出样例满足所有条件。例如,第 4 个条件可以这样验证:$ P=(2,3,1)\to $(交换 $ P_2,P_3 )\to(2,1,3)\to $(交换 $ P_1,P_2 )\to(1,2,3) $。反之,下面这种输出是不正确的:
2 1 2 1 3
因为它不满足第 3 个条件。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?