当前位置: 代码迷 >> 综合 >> Balanced Array
  详细解决方案

Balanced Array

热度:32   发布时间:2023-11-22 14:13:25.0

文章目录

  • 一、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

本博客给出本题截图
在这里插入图片描述

题意:题中要求实现这么一种数列,要求前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;
}

总结

水题,不解释

  相关解决方案