2175: 层叠消融
Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lld
Submitted: 118 Accepted: 78
[Submit][Status][Web Board]
Description
n张矩形纸片叠在一起,偶数张叠加的区域会消去,奇数张叠加的区域会保留,求最后保留的区域的总面积。矩形的边平行于坐标轴。
Input
多组输入,每组格式如下:
第一行1个整数n。
接下来n行,每行4个整数x1, y1, x2, y2。( x1, y1)为矩形左下顶点位置,( x2, y2)为矩形右上顶点位置。
数据范围:测试组数不超过10; 1<= n <= 100; -50 <= x1 < x2 <= 50; -50 <= y1 < y2 <= 50;
Output
每组输出一行,一个整数,表示最后保留的区域的总面积。
Sample Input
2 -2 -1 2 1 -1 -2 1 2 3 1 1 6 3 2 1 4 5 3 2 5 4
Sample Output
8 10
Author
刘银虎
代码如下:
#include <stdio.h> int main() { int a[105][105]; int i, j, k, n, sum, x1[100], y1[100], x2[100], y2[100]; while (scanf("%d", &n) != EOF) { sum = 0; memset(a, 0, sizeof(a)); for (i = 0; i < n; i++) { scanf("%d%d%d%d", &x1[i], &y1[i], &x2[i], &y2[i]); for (j = x1[i] + 50; j < x2[i] + 50; j++) for (k = y1[i] + 50; k < y2[i] + 50; k++) a[j][k]++; } for (i = 0; i < 105; i++) for (j = 0; j < 105; j++) if (a[i][j] % 2 != 0) sum++; printf("%d ", sum); } return 0; }