Título de Java Blue Bridge Cup Simulator (Parte 2)

Matriz espiral

Descripción del problema
  Para una tabla con n filas ym columnas, podemos llenar la tabla con enteros positivos a su vez utilizando el método espiral. Llamamos a la tabla llena una matriz espiral.
  Por ejemplo, una matriz espiral con 4 filas y 5 columnas es la siguiente:
  1 2 3 4 5
  14 15 16 17 6
  13 20 19 18 7
  12 11 10 9 8
Formato de entrada
  La primera fila de la entrada contiene dos enteros n, m, respectivamente, que representan la espiral El número de filas y columnas de la matriz.
  La segunda línea contiene dos enteros r, c, que indican el número de línea requerido y el número de columna.
El formato de salida
  genera un número entero que representa el valor del elemento en la fila r y la columna c de la matriz espiral.
Entrada de muestra
4 5
2 2
Salida de muestra
15
Tamaño y acuerdo del
  caso de uso de evaluación Para casos de uso de evaluación del 30%, 2 <= n, m <= 20.
  Para el 70% de los casos de uso de evaluación, 2 <= n, m <= 100.
  Para todos los casos de uso de evaluación, 2 <= n, m <= 1000, 1 <= r <= n, 1 <= c <= m.

import java.util.Scanner;

public class _007{
    static int [][] array = new int [1000][1000];  //定义数组及大小
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();  //行数
        int m = sc.nextInt();  //列数

        int r1 = sc.nextInt();
        int c1 = sc.nextInt();
        int num = 0;
        int r = 1,c = 0;
        while(num != n * m) {
            while(c < m && array[r][c+1] == 0)
                array[r][++c] = ++ num;
            while(r < n && array[r+1][c] == 0)
                array[++r][c] = ++ num;
            while(c > 1 && array[r][c-1] == 0)
                array[r][--c] = ++ num;
            while(r > 1 && array[r-1][c] == 0)
                array[--r][c] = ++ num;
        }
        System.out.println(array[r1][c1]);
    }
}

Secuencia de bamboleo

Descripción del problema
  Si los términos impares de una secuencia son más grandes que el término anterior y los términos pares son más pequeños que el término anterior, se llama secuencia de oscilación. Eso es un [2i] <a [2i-1font>, a [2i + 1font>> a [2i].
  Xiaoming quiere saber cuántas secuencias de oscilación tienen m de longitud y cada número es un número entero positivo entre 1 yn.
Formato de
  entrada La línea de entrada contiene dos enteros m, n.
El formato de salida
  genera un número entero que indica la respuesta. La respuesta puede ser grande, envíe el resto dividido por 10000.
Entrada de muestra
3 4
salida
de
muestra 14 descripción de muestra La
  siguiente es una secuencia de oscilación que cumple los requisitos:
  2 1 2
  2 1 3
  2 1 4
  3 1 2
  3 1 3
  3 1 4
  3 2 3
  3 2 4
  4 1 2
  4 1 3
  4 1 4
  4 2 3
  4 2 4
  4 3 4
Tamaño de caso de uso de evaluación y convenciones
  Para 20% de casos de uso de evaluación, 1 <= n, m <= 5;
  para 50% de casos de uso de evaluación, 1 <= n, m <= 10 ;
  Para el 80% de los casos de uso de evaluación, 1 <= n, m <= 100;
  Para todos los casos de uso de evaluación, 1 <= n, m <= 1000.

public class _008 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int[][] ch =new int[m+2][n+2];
        for (int i =1 ; i <= n ;i++){
            ch[1][i]=n-i+1;
        }
        for(int i=2;i<=m;i++){
            if((i&1)==1){
                for(int j=n;j>=1;j--)
                    ch[i][j]=(ch[i-1][j-1]+ch[i][j+1])%1000;
            }else{
                for(int j=1;j<=n;j++)
                    ch[i][j]=(ch[i-1][j+1]+ch[i][j-1])%1000;
            }
        }
        int result= (m&1)==1? ch[m][1]:ch[m][n];
        System.out.println(result);
    }
}

Poder del hogar

Descripción del problema
  En 2015, los hogares pudieron acceder a la electricidad en toda China. Como generador de energía, Xiaoming está ayudando a los países a lo largo del cinturón y la carretera a obtener electricidad.
  Esta vez, Xiaoming quiere ayudar a las aldeas a obtener electricidad. Entre ellas, la aldea 1 solo puede construir una central eléctrica, y la electricidad generada es suficiente para todas las aldeas.
  Ahora, no hay cables conectados entre las aldeas n. La tarea principal de Xiaoming es erigir cables para conectar estas aldeas de modo que todas las aldeas estén conectadas directa o indirectamente a la central eléctrica.
  Xiaoming midió la ubicación (coordenadas) y la altura de todas las aldeas. Si desea conectar dos aldeas, Xiaoming necesita pasar la distancia coordinada entre las dos aldeas más el cuadrado de la diferencia de altura, que se describe formalmente como las coordenadas de (x_1, y_1) La conexión entre el pueblo con h_1 y el pueblo con coordenadas (x_2, y_2) y la altura con h_2 es
  sqrt ((x_1-x_2) (x_1-x_2) + (y_1-y_2) (y_1-y_2)) + (h_1 -h_2) * (h_1-h_2).
  En la fórmula anterior, sqrt significa tomar la raíz cuadrada entre paréntesis. Preste atención a la posición de los corchetes, el método de cálculo de la altura es diferente del método de cálculo de las coordenadas horizontales y verticales.
  Debido a los fondos limitados, ayude a Xiaoming a calcular al menos cuánto le costará energizar las n aldeas.
Formato de entrada
  La primera línea de entrada contiene un número entero n, que representa el número de aldeas.
  En las siguientes n filas, cada uno de los tres enteros x, y y h representa la altura horizontal, vertical y de una aldea, respectivamente, y la primera aldea puede establecer una central eléctrica.
Formato de salida
  Emite una línea que contiene un número real, redondeado a 2 decimales para indicar la respuesta.
Entrada de muestra
4
1 1 3
9 9 7
8 8 6
4 5 4
Producto de muestra
17.41
Tamaño y acuerdo del
  caso de uso de evaluación Para el 30% de casos de uso de evaluación, 1 <= n <= 10;
  para el 60% de casos de uso de evaluación, 1 <= n <= 100;
  para todos los casos de uso de evaluación, 1 <= n <= 1000, 0 <= x, y, h <= 10000.

Por determinar . .

Xiaoming plantando árboles

Descripción del problema
  Xiaoming fue con sus amigos a plantar árboles en los suburbios y trajeron algunos retoños cuidadosamente investigados en su laboratorio.
  Hay n personas en Xiao Ming y sus amigos. Después de una cuidadosa selección, cada persona seleccionó un lugar adecuado para plantar árboles en un claro, un total de n. Ellos van a plantar todos los retoños que trajeron.
  Sin embargo, se encontraron con una dificultad: algunos retoños eran relativamente grandes y otros estaban demasiado juntos, lo que hizo que los dos árboles colisionaran cuando se plantaron.
  Vieron el árbol como un círculo, con el centro del círculo en el lugar que estaban buscando. Si los círculos correspondientes a los dos árboles se cruzan, los dos árboles no son adecuados para plantar al mismo tiempo (la tangente no se ve afectada), lo que se denomina conflicto entre los dos árboles.
  Xiaoming y sus amigos decidieron resumir primero y solo plantar una parte de ellos para asegurarse de que no haya árboles en conflicto. También esperan que estos árboles puedan cubrir el área más grande (área del círculo).
Formato de entrada
  La primera línea de entrada contiene un número entero n, que representa el número de personas, es decir, el número de posiciones que se plantarán.
  Las siguientes n filas, cada fila de tres enteros x, y, r, representan la horizontal, vertical y el radio de un árbol en campo abierto.
Formato de
  salida La línea de salida contiene un número entero, que representa la suma del área que se puede plantar sin conflicto. Dado que el área de cada árbol es un múltiplo entero de pi, genere el valor dividido por pi (debería ser un entero)
Entrada de muestra
6
1 1 2
1 4 2
1 7 2
4 1 2
4 4 2
4 7 2
Salida de muestra
12
Tamaño y acuerdo del
  caso de uso de evaluación Para casos de uso de evaluación del 30%, 1 <= n <= 10;
  Para el 60% de los casos de uso de evaluación, 1 <= n <= 20;
  para todos los casos de uso de evaluación, 1 <= n <= 30, 0 <= x, y <= 1000, 1 <= r <= 1000.

import java.util.Scanner;

public class _010 {
    public static boolean[][] bool = new boolean[30][30];
    static boolean[] vis = new boolean[30];
    public static int[] x = new int[30];
    public static int[] y = new int[30];
    public static int[] r = new int[30];
    public static int n = 0, max = -1;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        for (int i = 1; i <= n; i++) {
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
            r[i] = sc.nextInt();
        }
        for (int i = 1; i <= n; i++) {
            for (int j = i + 1; j <= n; j++) {
                boolean bo = ((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]) > (r[i] + r[j])
                        * (r[i] + r[j]));
                bool[i][j] = bo;
                bool[j][i] = bo;
            }
        }
        sc.close();
        dfs(1);
        System.out.println(max);
    }

    public static void dfs(int step) {
        if (step > n) {
            int sum = 0;
            for (int i = 1; i <= n; i++) {
                if (vis[i]) {
                    sum += (r[i] * r[i]);
                }
            }
            max = Math.max(sum, max);

            return;
        }

        vis[step] = false;
        dfs(step + 1);
        for (int i = 1; i < step; i++) {
            if (vis[i] && !bool[i][step]) {
                return;
            }

        }
        vis[step] = true;
        dfs(step + 1);
    }
}

Supongo que te gusta

Origin www.cnblogs.com/qimuz/p/12727916.html
Recomendado
Clasificación