Codeforces Round # 636 B. Matriz equilibrada (水)

Se le da un número entero positivo n n, se garantiza que n n es par (es decir, divisible por 2 2).

Desea construir la matriz a a de longitud n n tal que:

  • Los primeros n 2 n2 elementos de a a son pares (divisible por 2 2);
  • los segundos n 2 n2 elementos de a a son impares (no divisibles por 2 2);
  • todos los elementos de a a son distintos y positivos;
  • la suma de la primera mitad es igual a la suma de la segunda mitad ( i = 1 n 2 a i = i = n 2 + 1 n a i ∑i = 1n2ai = ∑i = n2 + 1nai).

Si hay varias respuestas, puede imprimir cualquiera. No se garantiza que exista la respuesta.

Debe responder t t casos de prueba independientes.

Entrada

La primera línea de la entrada contiene un número entero t t ( 1 t 10 4 1≤t≤104): el número de casos de prueba. Entonces t casos de prueba t siguen.

La única línea del caso de prueba contiene un número entero n n ( 2 n 2 10 5 2≤n≤2⋅105): la longitud de la matriz. Se garantiza que n n es par (es decir, divisible por 2 2).

Se garantiza que la suma de n n en todos los casos de prueba no exceda de 2 10 5 2⋅105 ( n 2 10 5 ∑n≤2⋅105).

Salida

Para cada caso de prueba, imprima la respuesta: " NO" (sin comillas), si no hay una respuesta adecuada para el caso de prueba dado o " SÍ" en la primera línea y cualquier matriz adecuada a 1 , a 2 , ... , a n a1, a2, ..., an ( 1 a i 10 9 1≤ai≤109) satisfacen las condiciones del enunciado del problema en la segunda línea.

Ejemplo
Entrada
Copiar
5 
2 
4 
6 
8 
10
Salida
Copiar
NO 
2 4 1 5 
NO 
2 4 6 8 1 3 5 11 
NO 
estructura casual. . . Nota: Cuando n / 2 es impar, no funcionará, porque la primera mitad y la mitad par son impares y no deben ser iguales.
#include <bits / stdc ++. h>
 usando el  espacio de nombres std;
int main () 
{ 
    int t; 
    cin >> t;
    while (t-- ) 
    { 
        int n; 
        cin >> n;
        if ((n / 2 )% 2 ! = 0 ) 
        { 
            cout << " NO " << endl;
            continuar ; 
        } 
        cout << " " << endl;
        vector < int > v1, v2;
        int i;
        para (i = 1 ; i <= n / 2 ; i ++) v1.push_back (i * 2 );
        para (i = 1 ; i <= n / 2 - 1 ; i ++) v2.push_back (i * 2 - 1 ); 
        v2.push_back (n / 2 + 2 * n / 2 - 1 );
        para (i = 0 ; i <v1.size (); i ++) cout << v1 [i] << '  ' ;
        para (i = 0; i <v2.size (); i ++) cout << v2 [i] << '  ' ; 
        cout << endl; 
    } 
    devuelve  0 ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/lipoicyclic/p/12749963.html
Recomendado
Clasificación