[USACO09OCT] El robot arado G

Enlace de tema

题目 描述 El
granjero John ha comprado un nuevo arado robótico para aliviarlo de la monotonía de arar un campo tras otro. Logra este objetivo, pero con una ligera desventaja: el arado robótico solo puede arar en un rectángulo perfecto con lados de longitud entera.

Debido a que el campo de FJ tiene árboles y otros obstáculos, FJ prepara el arado para arar muchos rectángulos diferentes, que pueden terminar superpuestos. Tiene curiosidad por saber cuántos cuadrados en su campo se aran realmente después de programar el arado con varias instrucciones de arado, cada una de las cuales describe un rectángulo dando sus coordenadas x, y inferior izquierda y superior derecha.

Como es habitual, el campo se divide en cuadrados cuyos lados son paralelos a los ejes xey. El campo tiene X cuadrados de ancho e Y cuadrados de alto (1 <= X <= 240; 1 <= Y <= 240). Cada una de las instrucciones de arado I (1 <= I <= 200) comprende cuatro números enteros: Xll, Yll, Xur y Yur (1 <= Xll <= Xur; Xll <= Xur <= X; 1 <= Yll <= Yur; Yll <= Yur <= Y) que son las coordenadas inferior izquierda y superior derecha del rectángulo que se va a arar. El arado arará todos los cuadrados del campo en el rango (Xll… Xur, Yll… Yur) que podría ser una fila y columna más de lo que se supondría inicialmente (dependiendo de cómo se adopten sus supuestos, por supuesto).

Considere un campo que tiene 6 cuadrados de ancho y 4 cuadrados de alto. Cuando FJ emite un par de instrucciones de arado (mostradas), el campo se limpia como se muestra con '*' y '#' (el campo normalmente arado se ve igual, pero '#' muestra cuáles fueron arados más recientemente):

......             **....             #####. 
......  (1,1)(2,4) **....  (1,3)(5,4) #####. 
......             **....             **.... 
......             **....             **.... 

Se aran un total de 14 cuadrados.

PUNTOS: 25

Para liberarse del interminable trabajo de arar, el granjero John compró un nuevo robot para ayudarlo a arar el campo. Este robot puede completar la tarea de arar el campo, pero desafortunadamente hay una pequeña deficiencia: este robot de arado solo puede arar un campo rectangular con una longitud de lado entero a la vez.

Debido a que el campo de FJ tiene árboles y otros obstáculos, FJ configura el robot para arar muchos rectángulos diferentes. Estos rectángulos pueden superponerse. Dio instrucciones al robot P, cada una de las cuales contenía un rectángulo para arar. Este campo está determinado por las coordenadas de las esquinas inferior izquierda y superior derecha del rectángulo. Tenía curiosidad por saber cuántos cuadrados se araron al final.

En términos generales, el campo se divide en muchos cuadrados pequeños. Los lados de estos cuadrados son paralelos al eje x o al eje y. El ancho del campo es X cuadrados y la altura es Y cuadrados (1 <= X <= 240; 1 <= Y <= 240). FJ ejecutó I (1 <= I <= 200) instrucciones, cada una Una instrucción contiene 4 enteros: Xll, Yll, Xur, Yur (1 <= Xll <= Xur; Xll <= Xur <= X; 1 <= Yll <= Yur; Yll <= Yur <= Y), respectivamente Las coordenadas de la esquina izquierda y esquina superior derecha del rectángulo que se va a arar. El robot arará todos los cuadrados donde la abscisa es Xll ... Xur y la ordenada es Yll ... Yur. Tal vez este rectángulo tenga una fila y una columna más de las que cree (es decir, hay columnas Xur-Xll + 1 en lugar de Xur-Xll de la columna Xll a la columna Xur).

Considere un campo que tiene 6 cuadrados de ancho y 4 cuadrados de alto. FJ realizó 2 operaciones (como sigue), y el campo se limpió en "*" y "#". Aunque en general la tierra arada tiene el mismo aspecto. Pero marcado con "#" se puede ver más claramente el último rectángulo que fue arado.

Se araron un total de 14 cuadrados de tierra.

Formato de entrada

  • Línea 1: Tres enteros separados por espacios: X, Y e I

  • Líneas 2… I + 1: La línea i + 1 contiene la instrucción de arado i que se describe con cuatro números enteros: Xll, Yll, Xur y Yur

Formato de salida

  • Línea 1: un solo entero que es el número total de cuadrados arados

Ejemplo de entrada y salida
Entrada n. ° 1
6 4 2
1 1 2 4
1 3 5 4
Salida n. ° 1
14
Descripción / Solicitud
Como en el ejemplo de la tarea.

Código:

//P2956 [USACO09OCT]机器人犁田The Robot Plow
#include<iostream>
#include<cstring>
using namespace std;
int space[250][250];
int main()
{
    
    
	ios::sync_with_stdio(false);
	int x, y, i, x1, y1, x2, y2, count = 0;
	cin >> x >> y >> i;
	memset(space, 0, sizeof(space));
	for(int a = 0; a < i; a++)
	{
    
    
		cin >> x1 >> y1 >> x2 >> y2;
		for(int b = x1; b <= x2; b++)
			for(int c = y1; c <= y2; c++)
				space[b][c]++;
	}
	for(int m = 1; m <= x; m++)
		for(int n = 1; n <= y; n++)
			if(space[m][n] > 0) count++;
	cout << count;
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_44826711/article/details/113748038
Recomendado
Clasificación