0题,很尴尬。
Bronze Division:
1. Blocked Billboard
题意:给你两个不相交的长方形,和第三个长方形障碍物。问你前面两个长方形的可见面积是多少。
观察:因为前两个长方形不相交,分别计算每个长方形和障碍物之间的关系就好了
方法:注意如何处理不相交的情况
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <algorithm> 5 #include <iostream> 6 #include <vector> 7 #include <unordered_map> 8 //#include <bits/stdc++.h> 9 #include <cassert> 10 #include <map> 11 #include <bitset> 12 using namespace std; 13 14 #define pb push_back 15 #define mp make_pair 16 typedef long long ll; 17 typedef unsigned long long ull; 18 typedef pair<int, int> ii; 19 20 21 int x[3][2], y[3][2]; 22 int solve(int id, int di) 23 { 24 int x1 = max(x[id][0], x[di][0]); 25 int x2 = min(x[id][1], x[di][1]); 26 int y1 = max(y[id][0], y[di][0]); 27 int y2 = min(y[id][1], y[di][1]); 28 return max(0, x2-x1)*max(0, y2-y1); 29 } 30 int main() 31 { 32 freopen("billboard.in", "r", stdin); 33 freopen("billboard.out", "w", stdout); 34 for (int i = 0; i < 3; ++i) 35 for (int j = 0; j < 2; ++j) 36 scanf("%d %d", &x[i][j], &y[i][j]); 37 int ans = 0; 38 for (int i = 0; i < 2; ++i) 39 ans += solve(i, i)-solve(i, 2); 40 printf("%d\n", ans); 41 }