[USACO09OCT] Der Roboterpflug G.

Themenlink

题目 描述
Bauer John hat einen neuen Roboterpflug gekauft, um ihn von der Plackerei zu befreien, Feld für Feld für Feld zu pflügen. Dieses Ziel wird erreicht, jedoch mit einem kleinen Nachteil: Der Roboterpflug kann nur in einem perfekten Rechteck mit ganzzahligen Seiten pflügen.

Da das Feld von FJ Bäume und andere Hindernisse aufweist, richtet FJ den Pflug so ein, dass viele verschiedene Rechtecke gepflügt werden, die sich möglicherweise überlappen. Er ist neugierig, wie viele Quadrate in seinem Feld tatsächlich gepflügt werden, nachdem er den Pflug mit verschiedenen Pfluganweisungen programmiert hat, von denen jede ein Rechteck beschreibt, indem er seine x-, y-Koordinaten unten links und oben rechts angibt.

Wie üblich ist das Feld in Quadrate unterteilt, deren Seiten parallel zur x- und y-Achse sind. Das Feld ist X Quadrate breit und Y Quadrate hoch (1 <= X <= 240; 1 <= Y <= 240). Jede der Pflugbefehle I (1 <= I <= 200) umfasst vier ganze Zahlen: Xll, Yll, Xur und Yur (1 <= Xll <= Xur; Xll <= Xur <= X; 1 <= Yll <= Yur; Yll <= Yur <= Y) sind die unteren linken und oberen rechten Koordinaten des zu pflügenden Rechtecks. Der Pflug pflügt alle Felder des Feldes in dem Bereich (Xll… Xur, Yll… Yur), der eine Zeile und Spalte mehr sein kann als ursprünglich angenommen (natürlich abhängig davon, wie Sie Ihre Annahmen treffen).

Stellen Sie sich ein Feld vor, das 6 Quadrate breit und 4 Quadrate hoch ist. Wenn FJ ein Paar Pfluganweisungen ausgibt (gezeigt), wird das Feld gepflügt, wie durch '*' und '#' gezeigt (normalerweise sieht das gepflügte Feld alle gleich aus, aber '#' zeigt an, welche zuletzt gepflügt wurden):

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

Insgesamt sind 14 Felder gepflügt.

PUNKTE: 25

Um sich von der endlosen Pflugarbeit zu befreien, kaufte Bauer John einen neuen Roboter, der ihm beim Pflügen des Feldes helfen sollte. Dieser Roboter kann die Aufgabe des Pflügens des Feldes erfüllen, aber leider gibt es ein kleines Manko: Dieser Pflugroboter kann jeweils nur ein rechteckiges Feld mit einer ganzzahligen Seitenlänge pflügen.

Da das Feld von FJ Bäume und andere Hindernisse hat, stellt FJ den Roboter so ein, dass er viele verschiedene Rechtecke pflügt. Diese Rechtecke dürfen sich überlappen. Er gab dem Roboter P Anweisungen, von denen jede ein Rechteck zum Pflügen enthielt. Dieses Feld wird durch die Koordinaten der unteren linken und oberen rechten Ecke des Rechtecks ​​bestimmt. Er war neugierig, wie viele Plätze am Ende gepflügt wurden.

Im Allgemeinen ist das Feld in viele kleine Quadrate unterteilt. Die Seiten dieser Quadrate sind parallel zur x- oder y-Achse. Die Breite des Feldes beträgt X Quadrate und die Höhe beträgt Y Quadrate (1 <= X <= 240; 1 <= Y <= 240). FJ hat I (1 <= I <= 200) Anweisungen ausgeführt, die jeweils eine Anweisung enthalten 4 ganze Zahlen: Xll, Yll, Xur, Yur (1 <= Xll <= Xur; Xll <= Xur <= X; 1 <= Yll <= Yur; Yll <= Yur <= Y) bzw. Die Koordinaten der unteren linke Ecke und obere rechte Ecke des zu pflügenden Rechtecks. Der Roboter pflügt alle Quadrate, auf denen die Abszisse Xll ... Xur und die Ordinate Yll ... Yur ist. Möglicherweise hat dieses Rechteck eine Zeile und eine Spalte mehr als Sie denken (dh es gibt Xur-Xll + 1 Spalten anstelle von Xur-Xll von Spalte Xll zu Spalte Xur).

Stellen Sie sich ein Feld vor, das 6 Quadrate breit und 4 Quadrate hoch ist. FJ führte zwei Operationen durch (wie folgt) und das Feld wurde in "*" und "#" gepflügt. Obwohl das gepflügte Land im Allgemeinen gleich aussieht. Mit "#" gekennzeichnet ist jedoch das zuletzt gepflügte Rechteck deutlicher zu erkennen.

Insgesamt wurden 14 Quadrate Boden gepflügt.

Eingabeformat

  • Zeile 1: Drei durch Leerzeichen getrennte Ganzzahlen: X, Y und I.

  • Zeilen 2… I + 1: Zeile i + 1 enthält die Pfluganweisung i, die durch vier Ganzzahlen beschrieben wird: Xll, Yll, Xur und Yur

Ausgabeformat

  • Zeile 1: Eine einzelne Ganzzahl, die die Gesamtzahl der gepflügten Quadrate darstellt

Eingabe- und Ausgabebeispiel
Eingabe # 1
6 4 2
1 1 2 4
1 3 5 4
Ausgabe # 1
14
Beschreibung / Eingabeaufforderung
Wie im Beispiel der Aufgabe.

Code:

//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;
}

Ich denke du magst

Origin blog.csdn.net/qq_44826711/article/details/113748038
Empfohlen
Rangfolge