Codeforces Round # 632 (Div. 2) (A + B)

A. Little Artem

Significado de la pregunta: esta pregunta es relativamente simple. En pocas palabras, se le da una matriz n * m, y se le requiere que la pinte. Entre ellos, 'B' representa el negro y 'W' representa el blanco. B = W + 1.

Solución del problema: problema de inicio de sesión simple, pero utilicé un método complicado durante el juego, por lo que me llevó mucho tiempo. Después del juego, ver la solución de otra persona es realmente inspirador.

Código:

Método 1:

#include <iostream> 
#include <cstdio> 
#include <cstring> 
#include <algorithm>
 usando el  espacio de nombres std;
const  int nk_max = 8 + 5 ;
const  int INF = 0x3fffffff ;
int main () {
     int t;
    int n, m; 
    cin >> t;
    mientras que (t-- ) {
         int B, W; 
        cin >> n / * 行 数* / >> m / * 列 数* /;
        int todo = n * m;
        char ptr [ 150 ] [ 150 ];
        if (todo% 2 == 0 ) { 
            B = todo / 2 ; 
            W = B- 1 ; 
        } Else { 
            B = (todo / 2 ) + 1 ; 
            W = todo- B; 
        } 
        // 涂色
        for ( int i = 1 ; i <= n; i ++ ) {
             for (int j = 1 ; j <= m; j ++ ) {
                 if (i% 2 ! = 0 && j% 2 == 0 ) { 
                    ptr [i] [j] = ' W ' ; 
                } 
                if (i% 2 ! = 0 && j% 2 ! = 0 ) { 
                    ptr [i] [j] = ' B ' ; 
                } 
                if (i% 2 == 0 && j% 2 ! = 0 ) {
                    ptr [i] [j] = ' W ' ; 
                } 
                if (i% 2 == 0 && j% 2 == 0 ) { 
                    ptr [i] [j] = ' B ' ; 
                } 
            } 
        } 
//         cout << B << "" << W << "===" << endl; 
        if (tot% 2 == 0 ) { // 判断 奇偶 性 , 如果 是 偶数 的 话
            if (ptr [n] [m] == ' B '] = ' B ' ; 
            } else { 
                ptr [n] [m] = ' B ' ; 
            } 
        } 
        para ( int i = 1 ; i <= n; i ++ ) {
             para ( int j = 1 ; j <= m; j ++ ) { 
                cout << ptr [i] [j]; 
            } 
            cout << endl; 
        } 
    } 
    devuelve  0 ; 
}

Método 2:

La idea es relativamente simple, y el código es relativamente simple;

#include <bits / stdc ++. h>
 usando el espacio de nombres std; 

principal () firmado { 
    ios :: sync_with_stdio ( falso ); int t, n, m; cin >> t; mientras que (t-- ) {cin >> n >> m; for ( int i = 1; i <= n; i ++ ) { for ( int j = 1; j <= m; j ++ ) { if (i == 1 && j == 1) cout << " W " ; sino cout << " B " ; } cout << endl; }}}

Reimpreso de: https://www.cnblogs.com/mollnn/p/12664323.htmlB. Kind AntonB. Kind AntonB. Kind Anton

B. Amable Anton

Tema: le da dos cadenas, donde a solo incluye -1, 0, 1; la composición de la matriz b no está limitada, primero seleccione i, j, donde i <j, opere en una matriz, a j = a i + a j ,, tenga en cuenta que en este momento (i <j), ahora se le pide que determine si una matriz se puede cambiar a la matriz a través de cambios.

Solución del problema: este problema se agota si se hace mediante una simple simulación. Aquí usamos el mapa para registrar el número de ocurrencias de cada elemento que aparece en a, y luego atravesamos de adelante hacia atrás para determinar cada elemento. .

#include <iostream> 
#include <cstring> 
#include <algorithm> 
#include <map>
 int a [ 100010 ] = { 0 };
int b [ 100010 ] = { 0 }; 
usando el  espacio de nombres estándar;
int main () {
     int t, n; 
    cin >> t; 
    mapa < int , int > mp;
    mientras que (t-- ) { 
        mp.clear (); 
        scanf ( " % d " , & n);
        para ( int i = 1 ; i <= n; i ++ ) { 
            cin >> a [i]; 
            mp [a [i]] ++ ; 
        } 
        for ( int i = 1 ; i <= n; i ++ ) { 
            cin >> b [i]; 
        } // Después de completar la entrada de datos, el procesamiento de datos comienza por debajo de 
        int f = 1 ;
         for ( int i = n; i> = 1 ; i-- ) { 
            mp [a [i]] - ;
             if (a [i] == b [i]) {
                 continuar; 
            } 
            if (a [i] < b [i]) {
                 if (! mp [ 1 ]) { 
                    f = 0 ;
                    romper ; 
                } 
            } 
            if (a [i]> b [i]) {
                 if (! mp [- 1 ]) { 
                    f = 0 ;
                    romper ; 
                } 
            } 
        } 
        if (f) { 
            cout << " YES " <<endl 
        } else { 
            cout << " NO " << endl; 
        } 
    } 
    devuelve  0 ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/blogxsc/p/12675004.html
Recomendado
Clasificación