CF1793B Fedya and Array
题目描述
最近,Fedya 在生日时收到了一个由 $n$ 个整数构成的数组 $a$,这些整数以环状排列。对于每一对相邻的数($a_1$ 和 $a_2$,$a_2$ 和 $a_3$,$\ldots$,$a_{n-1}$ 和 $a_n$,$a_n$ 和 $a_1$),它们的绝对差值等于 $1$。
我们称一个元素为“局部极大值”,当且仅当它大于它的两个相邻元素。同理,称一个元素为“局部极小值”,当且仅当它小于它的两个相邻元素。注意,$a_1$ 和 $a_n$ 也是相邻元素。
不幸的是,Fedya 把这个数组弄丢了,但他还记得数组中所有局部极大值的和为 $x$,所有局部极小值的和为 $y$。
给定 $x$ 和 $y$,请你帮助 Fedya 构造一个满足条件的、最短长度的数组。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。
接下来每组测试用例一行,包含两个整数 $x$ 和 $y$($-10^{9} \le y < x \le 10^{9}$),分别表示局部极大值的和和局部极小值的和。
输出格式
对于每组测试用例,第一行输出一个整数 $n$,表示满足条件的数组的最小长度。
第二行输出 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^{9} \leqslant a_i \leqslant 10^{9}$),表示数组元素,要求每对相邻元素的绝对差值等于 $1$。
如果有多组解,输出任意一组均可。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
说明/提示
在第一个测试用例中,局部极大值出现在第 $3, 7, 10$ 个位置,局部极小值出现在第 $1, 6, 8$ 个位置。$x = a_3 + a_7 + a_{10} = 2 + 0 + 1 = 3$,$y = a_1 + a_6 + a_8 = 0 + (-1) + (-1) = -2$。
在第二个测试用例中,局部极大值出现在第 $2, 10$ 个位置,局部极小值出现在第 $1, 3$ 个位置。$x = a_2 + a_{10} = -1 + 5 = 4$,$y = a_1 + a_3 = -2 + (-2) = -4$。
在第三个测试用例中,局部极大值出现在第 $1, 5$ 个位置,局部极小值出现在第 $3, 6$ 个位置。
由 ChatGPT 4.1 翻译