TAG
- 芝士水题、算法 − 【计算几何 − 数形结合】 芝士水题、算法 - 【计算几何 - 数形结合】 芝士水题、算法−【计算几何−数形结合】时间复杂度
- O ( N ∗ log N ) O(N \ast \log N) O(N∗logN)
//
#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define y1 yL
vector<int> vx, vy;
bool f() {
int x1 = min(vx[0], vx[1]);
int x2 = max(vx[0], vx[1]);
int x3 = min(vx[2], vx[3]);
int x4 = max(vx[2], vx[3]);
int y1 = min(vy[0], vy[1]);
int y2 = max(vy[0], vy[1]);
int y3 = min(vy[2], vy[3]);
int y4 = max(vy[2], vy[3]);
return (x2 < x3 || x4 < x1 || y2 < y3 || y4 < y1);
}
void solve() {
for (int i = 1; i <= 4; i++) {
int x, y;
char ch1, ch2;
scanf("%d%c%d%c", &x, &ch1, &y, &ch2);
vx.push_back(x);
vy.push_back(y);
}
bool flag = f();
sort(vx.begin(), vx.end());
sort(vy.begin(), vy.end());
if (flag) {
printf("NO\n");
} else {
printf("%d,%d,%d,%d\n", vx[1], vy[1], vx[2] - vx[1], vy[2] - vy[1]);
}
printf("%d,%d,%d,%d\n", vx[0], vy[0], vx[3] - vx[0], vy[3] - vy[0]);
}
signed main() {
int t = 1;
// scanf("%d", &t);
while (t--) solve();
return 0;
}
实现细节
- `
参考示意图
-
`
参考链接
- `
作者 | 乐意奥AI