文章目录
- 一、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;
}
总结
水题,不解释