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 }
View Code

相关文章: