Balanced Array

简介: Balanced Array

文章目录

一、Balanced Array

总结


一、Balanced Array

本题链接: Balanced Array


题目:

B. Balanced Array

time limit per test1 second

memory limit per test256 megabytes

inputstandard input

outputstandard output

You are given a positive integer n, it is guaranteed that n is even (i.e. divisible by 2).


You want to construct the array a of length n such that:


The first n2 elements of a are even (divisible by 2);

the second n2 elements of a are odd (not divisible by 2);

all elements of a are distinct and positive;

the sum of the first half equals to the sum of the second half (∑i=1n2ai=∑i=n2+1nai).

If there are multiple answers, you can print any. It is not guaranteed that the answer exists.


You have to answer t independent test cases.


Input

The first line of the input contains one integer t (1≤t≤104) — the number of test cases. Then t test cases follow.


The only line of the test case contains one integer n (2≤n≤2⋅105) — the length of the array. It is guaranteed that that n is even (i.e. divisible by 2).


It is guaranteed that the sum of n over all test cases does not exceed 2⋅105 (∑n≤2⋅105).


Output

For each test case, print the answer — “NO” (without quotes), if there is no suitable answer for the given test case or “YES” in the first line and any suitable array a1,a2,…,an (1≤ai≤109) satisfying conditions from the problem statement on the second line.


Example


input

5

2

4

6

8

10

output

NO

YES

2 4 1 5

NO

YES

2 4 6 8 1 3 5 11

NO

本博客给出本题截图

20210719161909325.png

题意:题中要求实现这么一种数列,要求前n / 2项的和与后n / 2项的和相等,并且要求对于第n / 2个元素和第n / 4个元素要求是偶数,如果存在这么一种数组,则输出YES并输出数组中的所有元素的值 (答案不唯一),如果不存在这样的数组,则输出NO

AC代码

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        int m;
        cin >> m;
        if (m % 2 == 0 && m % 4 != 0)
        {
            puts("NO");
            continue;
        }
        puts("YES");
        int res1 = 0, res2 = 0;
        for (int i = 0; i < m / 2; i ++ ) 
        {
            int t = (i + 1) * 2;
            cout << t << ' ';
            res1 += t;
        }
        for (int i = 0; i < m / 2 - 1; i ++ ) 
        {
            int t = i * 2 + 1;
            cout << t << ' ';
            res2 += t;
        }
        cout << res1 - res2 << endl;
    }
    return 0;
}

总结

水题,不解释

目录
相关文章
|
8月前
|
Linux Windows
【已解决】ValueError: num_samples should be a positive integer value, but got num_samples=0
【已解决】ValueError: num_samples should be a positive integer value, but got num_samples=0
|
8月前
|
Python
完美解决丨2. `TypeError: list indices must be integers or slices, not str`
完美解决丨2. `TypeError: list indices must be integers or slices, not str`
|
算法
LeetCode Find Minimum in Rotated Sorted Array II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。
94 0
LeetCode Find Minimum in Rotated Sorted Array II
LeetCode 153. Find Minimum in Rotated Sorted Array
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。
114 0
LeetCode 153. Find Minimum in Rotated Sorted Array
成功解决ValueError: min_samples_split must be an integer greater than 1 or a float in (0.0, 1.0]; got th
成功解决ValueError: min_samples_split must be an integer greater than 1 or a float in (0.0, 1.0]; got th
成功解决TypeError: slice indices must be integers or None or have an __index__ method
成功解决TypeError: slice indices must be integers or None or have an __index__ method
|
索引 Python
成功解决TypeError: tuple indices must be integers or slices, not str
成功解决TypeError: tuple indices must be integers or slices, not str