package CCF_CSP;
import java.util.Scanner;
/**
* @author 马清华
* @version 1.8
*/
public class M2023_03_1 {
public static void main(String[] args) {
int n; //田地的数量
int a; //田地的纵坐标
int b; //田地的纵坐标
// 分别输入三个变量的值
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
a = scanner.nextInt();
b = scanner.nextInt();
int area = 0; //初始化土地面积为0
//定义题目中所给的x1,y1,x2,y2,即上边界和下边界
int x1, y1, x2, y2;
//利用for循环不断遍历,分别求出每块土地的值,再累加计算面积
for (int i = 1; i <= n; i++) {
//每一次循环中分别输入对应的坐标值
x1 = scanner.nextInt();
y1 = scanner.nextInt();
x2 = scanner.nextInt();
y2 = scanner.nextInt();
//定义计算后符合条件的坐标
int xk = 0;
int yk = 0;
int xt = 0;
int yt = 0;
//进行分类讨论
//首先讨论左小角横坐标
if (x1 >= 0 && x1 <= a) {
xk = x1;
}
if (x1 < 0) {
xk = 0;
}
if (x1 > a) {
continue; //如果左下角都越界 说明没有交集
}
//再对右下角进行讨论
if (y1 >= 0 && y1 <= b) {
yk = y1;
}
if (y1 < 0) {
yk = 0;
}
if (y1 > b) {
continue; //如果左下角都越界 说明没有交集
}
//再对左上角横坐标进行讨论
if (x2 >= 0 && x2 <= a) {
xt = x2;
}
if (x2 < 0) {
continue; //右下角都不在土地中,说明没有交集
}
if (x2 > a) {
xt = a;
}
//再对左上角纵坐标进行讨论
if (y2 >= 0 && y2 <= b) {
yt = y2;
}
if (y2 < 0) {
continue; //右下角都不在土地中,说明没有交集
}
if (y2 > b) {
yt = b;
}
//对每一次的土地面积进行计算
if (xt >= xk && yt >= yk) {
area += (xt - xk) * (yt - yk);
}
}
System.out.println(area);
}
}
本人小白一枚,记录一下第一次完成ccf题目的过程。代码有详细地注释,跟大家一起分享学习噢~