Codeforces Round # 634 (Div. 3)

A. caramelos y dos hermanas

Titulo

¿Cuántos casos hay para dividir un número en dos números desiguales?

Ideas

Cuando los números impares se dividen entre dos, los números pares deben sustraerse si son iguales.

Código

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

vacío resolver () {
     int n; cin >> n;
    if (n & 1 ) cout << n / 2 << " \ n " ;
    else cout << n / 2 - 1 << " \ n " ; 
} 

int main () {
     int t; cin >> t;
    mientras que (t-- ) resuelve (); 
}

B. Construir la cadena

Titulo

Construya una cadena larga de $ n $ para que cada subcadena sucesiva de $ a $ tenga exactamente $ b $ letras diferentes.

Ideas

Solo usa letras $ b $ para construir.

Código

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

nulo resolver () {
     int n, a, b; cin >> n >> a >> b;
    for ( int i = 0 ; i <n; i ++ ) { 
        cout << char ( ' a ' + i% b); 
    } 
    cout << " \ n " ; 
} 

int main () {
     int t; cin >> t;
    mientras que (t-- ) resuelve (); 
}

C. Dos equipos componiendo

Titulo

Elija algunos números en una matriz y divídalos en dos grupos, un grupo es diferente y un grupo es el mismo.

Ideas

Registre el número de solo un número y el número máximo de un número, si la diferencia entre el último y el primero es mayor o igual a $ 2 $, entonces el segundo conjunto puede dar un número al primer conjunto, de lo contrario el menor de los dos Valorar y finalmente juzgar los dos casos de la muestra.

Código

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

vacío resolver () {
     int n; cin >> n; 
    mapa < int , int > m;
    int c [n]; para ( int & i: c) cin >> i, ++ m [i];
    int a = 0 , b = 0 ;
    para (auto i: m) 
         if (i.second == 1 ) ++ a;
        else {
             if (b) ++ a; 
            b =max (b, i.segundo); 
        } 
    if (n == 1 ) 
        cout << 0 << " \ n " ;
    más  si (b == 0 ) 
        cout << 1 << " \ n " ;
    más  si (b - a> = 2 ) 
        cout << a + 1 << " \ n " ;
    else 
        cout << min (a, b) << " \ n " ;

main () {
     int t; cin >> t;
    mientras que (t-- ) resuelve (); 
}

D. Anti-Sudoku

Titulo

Cambie una matriz cuadrada de Sudoku $ 9 {\ times} 9 $ por una matriz cuadrada de Sudoku inversa, es decir, al menos dos de las filas, columnas y matrices cuadradas $ 9 $ de $ 3 {\ times} 3 $ tienen el mismo número, la mayoría de los cambios $ 9 $ número.

Ideas

Seleccione filas y columnas de $ 9 $ sin repetir en la matriz cuadrada de $ 9 $, y cambie el número de intersecciones de estas filas y columnas de $ 9 $.

De hecho, es suficiente usar la naturaleza de Sudoku para cambiar un número a otro, porque en la matriz cuadrada de Sudoku correcta, cada número corresponde a nueve conjuntos de filas, columnas y matrices cuadradas no repetidas.

Código

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

vacío resolver () {
     char MP [ 10 ] [ 10 ] = {};
    for ( int i = 1 ; i <= 9 ; i ++ ) {
         for ( int j = 1 ; j <= 9 ; j ++ ) { 
            cin >> MP [i] [j]; 
        } 
    } 
    bool vis_row [ 10 ] = {};
    bool vis_col [ 10 ] = {};
    for ( int i = 0 ; i < 3 ; i ++) { // Cambio en unidades de bloques 3x3 
        para ( int j = 0 ; j < 3 ; j ++ ) {
             bool flag = false ;
             for ( int x = 1 + 3 * i; x <= 3 * (i + 1 ); x ++ ) (
                 para ( int y = 1 + 3 * j; y <= 3 * (j + 1 ); y ++) {
                     if (! vis_row [x] y! vis_col [y]) {
                         if (MP [x] [y] == ' 9 ' ) MP [x] [y] = ' 1 ' ;
                        de lo contrario MP [x] [y] ++ 
                        vis_row [x] = vis_col [y] = verdadero ; 
                        bandera = verdadero ;
                        romper ; 
                    } 
                } 
                Si (bandera) descanso ; 
            } 
        } 
    } 
    para( int i = 1 ; i <= 9 ; i ++ ) {
         para ( int j = 1 ; j <= 9 ; j ++ ) { 
            cout << MP [i] [j]; 
        } 
        cout << " \ n " ; 
    } 
} 

int main () {
     int t; cin >> t;
    mientras que (t-- ) resuelve (); 
}

EF para ser llenado.

 

Supongo que te gusta

Origin www.cnblogs.com/Kanoon/p/12695395.html
Recomendado
Clasificación