Frieren and Rotating Calipers Solution
由题矩形长和宽需要与$x$轴或 $y$轴平行
找到最大,最小的$x$, $y$记为$max_x, min_x, max_y, min_y$
答案$(max_x - min_x) * (max_y - min_y)$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <bits/stdc++.h> using namespace std;
int main(){
int t; cin >> t; while(t--){ int n; cin >> n; vector<int> x(n), y(n); for(int i = 0;i < n;i++){ cin >> x[i] >> y[i]; } int max_x = *max_element(x.begin(), x.end()); int max_y = *max_element(y.begin(), y.end()); int min_x = *min_element(x.begin(), x.end()); int min_y = *min_element(y.begin(), y.end()); cout << (max_x - min_x) * (max_y - min_y) << "\n"; }
return 0; }
|
复杂度$O(T * n)$
杂记
学习旋转卡壳时想到的签到题,赛时凡过题者都过了这题