CF1973E.Cat, Fox and Swaps
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Fox 找到了一组数组 p1,p2,…,pn,这是一个长度为 n 的排列,包含了 1,2,…,n 这 n 个数。她想将这些元素按升序排序。Cat 想帮助她——他可以交换数组中任意两个数 x 和 y,但只有当 l≤x+y≤r 时才允许交换(注意,这个限制是针对元素的值,而不是它们的位置)。他可以进行任意次数这样的交换。
他们还不知道 l 和 r 的具体数值,只知道 1≤l≤r≤2n。
现在给定 n 和数组 p1,p2,…,pn,请你计算有多少对整数对 (l,r) 满足上述条件,使得在只能交换满足 l≤x+y≤r 的两个数的情况下,可以将该排列排序(可以交换任意多次,甚至 0 次)。
† 长度为 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≤105)。
第二行包含 n 个整数,表示数组 p1,p2,…,pn(1≤pi≤n)。保证该数组是长度为 n 的排列。
保证所有测试数据中 n 的总和不超过 105。
输出格式
对于每组测试数据,输出一个整数,表示满足条件的整数对 (l,r) 的数量,其中 1≤l≤r≤2n,并且在该限制下可以将数组排序。
输入输出样例
输入#1
7 2 2 1 3 3 1 2 4 3 2 1 4 5 5 3 1 2 4 5 1 2 3 4 5 6 3 2 1 5 4 6 6 1 3 2 4 5 6
输出#1
6 11 23 29 55 46 58
说明/提示
在第一个样例中,我们需要能够交换 1 和 2,所以必须能交换和为 3 的两个数。恰好有 6 对满足条件:(1,3),(2,3),(3,3),(1,4),(2,4) 和 (3,4),所以答案是 6。
在第二个样例中,满足条件的 11 对为 (1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6),(4,5) 和 (4,6)。例如,如果选择对 (3,4),我们可以先交换 1 和 2,再交换 1 和 3,这样排列就被排序了。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?