Luogu P1047 El árbol fuera de la puerta de la escuela (matriz, bucle)

Descripción del título
Hay una fila de árboles en el camino de 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 quitarlos.

La
primera línea del formato de entrada tiene 22 números enteros L (1 \ le L \ le 10000) L (1≤L≤10000) y M (1 \ le M \ le 100) M (1≤M≤100), LL significa carretera La longitud de MM representa el número de regiones y un espacio separa LL y MM.
Cada una de las siguientes líneas MM contiene 22 números enteros diferentes, separados por un espacio, que indican las coordenadas de los puntos inicial y final de un área.

El formato de salida es de
11 números enteros, que representan el número de árboles que quedan en la carretera.

De entrada y de muestreo de salida
de entrada # 1 copia
500 3
150 300
100 200
470 471
de salida # 1 copia
298

Ideas:

Por primera vez, marque todos los árboles de la carretera, indicando que este punto no ha sido visitado.
En la segunda pasada, lea al principio y al final del intervalo, recorra desde el principio hasta el final del intervalo y márquelo como visitado. (Tenga cuidado de evitar marcas duplicadas) En la
tercera pasada, los árboles de la carretera se visitan de forma secuencial. Mientras no se hayan visitado, el recuento se incrementa en 1, de modo que se calcula el número de todos los árboles que aún existen en la carretera.

#include <iostream>

using namespace std;

int main() {
	int L; //马路的长度
	int M;//区域的数目
	int cnt=0;//剩余的树的数目
	int vis[10000];//判断是否被访问
	cin >> L >> M;
	
	//0表示未访问过,1表示访问过
	for (int i = 0; i <= L; i++) {
		vis[i] = 0;//将所有的树标记为未访问过
	}

	for (int i = 1; i <= M; i++) {
		int start, over;
		cin >> start >> over;

		for (int j = start; j <= over; j++) {
			if (vis[j] == 0)//防止重复
				vis[j] = 1;//从这个区间的头和尾开始,将所有区间内的树标记为访问过
		}
	}

	for (int i = 0; i <= L; i++) {
		if (vis[i] == 0) {
			cnt++;
		}
	}
	cout << cnt << endl;

	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44093867/article/details/98889683
Recomendado
Clasificación