Campo de entrenamiento Luogu P1047 El árbol fuera de la puerta de la escuela (Java)

Descripción del Título

Hay una hilera de árboles en el camino con una longitud L fuera de la puerta de una escuela, y la distancia entre cada dos árboles adyacentes es de 11 metros. Podemos considerar la carretera como una recta numérica, un extremo de la carretera está en la posición 00 en la recta numérica y el otro extremo está en la posición LL; cada punto entero en la recta numérica es 0,1,2, ..., L0,1,2, ..., L, ambos plantan un árbol.

Porque hay algunas áreas en el camino para construir subterráneos. Estas áreas están representadas por sus puntos inicial y final en la recta numérica. Se sabe que las coordenadas del punto inicial y final de cualquier área son números enteros y puede haber partes superpuestas entre las áreas. Ahora debemos quitar los árboles en estas áreas (incluidos los dos árboles al final del área). Su tarea es calcular cuántos árboles quedan en el camino después de que se eliminan todos estos árboles

Formato de entrada

La primera línea tiene dos números enteros L (1 ≤ L ≤ 10000) y M (1 ≤ M ≤ 100). L representa la longitud de la carretera, M representa el número de áreas y L y M están separados por un espacio.
Cada una de las siguientes M líneas contiene 2 números enteros diferentes, separados por un espacio, que indican las coordenadas de los puntos inicial y final de un área.

Formato de salida

Un número entero que representa el número de árboles que quedan en la carretera.

Entrada y salida de muestra

Ingrese # 1

500 3
150 300
100 200
470 471

Salida # 1

298

Instrucciones / consejos

NOIP2005 Universal Group Question 2
Para el 20% de los datos, no hay superposición entre regiones;
para otros datos, hay superposición entre regiones.

Ideas para resolver problemas

Primero suponga que no se han eliminado todos los árboles count = L + 1, y luego recorra de 0 a L para determinar si está en el área del metro, si es así, cuente -, y finalmente cuente de salida como resultado final.

Código

import java.util.*;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner in = new Scanner(System.in);
		int l = in.nextInt();
		int m = in.nextInt();
		int count = l+1;
		int[] begin = new int[m];
		int[] end = new int[m];
		for (int i = 0; i < m; i++) {
    
    
			begin[i] = in.nextInt();
			end[i] = in.nextInt();
		}
		for (int i = 0; i <= l; i++) {
    
    
			for (int j = 0; j < m; j++) {
    
    
				if (i>=begin[j] && i<=end[j]) {
    
    
					count--;
					break;
				}
			}
		}
		System.out.println(count);
	}

}

Supongo que te gusta

Origin blog.csdn.net/UCB001/article/details/103546098
Recomendado
Clasificación