计算几何-离散化
2017-12-08 21:18
113 查看
矩形覆盖
区间覆盖
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Interval {
int L, R;
bool operator <(const Interval b) const { //重载运算符-按左端点比较
return L < b.L;
}
};
Interval I[20001];
int N, ans;
int main() {
int last;
scanf("%d", &N);
for(int i=1; i<=N; i++) scanf("%d%d", &I[i].L, &I[i].R);
sort(I+1, I+N+1); //离散
last = -1e9-1;
for(int i=1; i<=N; i++) {
if(I[i].R <= last) continue; //if 当前区间被包含
if(I[i].L > last) ans += I[i].R - I[i].L;//if 与上个区间不重合
else ans += I[i].R - last; //if 与上个区间有重合部分
last = I[i].R;
}
printf("%d\n", ans);
return 0;
}
#include <iostream> #include <algorithm> using namespace std; struct SQ { int x1, y1; int x2, y2; } sq[201]; int n; int X[401], Y[401]; bool G[401][401]; long long ans; int main() { cin >> n; for(int i=1; i<=n; i++) { cin >> sq[i].x1 >> sq[i].y1 >> sq[i].x2 >> sq[i].y2; X[i*2-1] = sq[i].x1; X[i*2] = sq[i].x2; Y[i*2-1] = sq[i].y1; Y[i*2] = sq[i].y2; } sort(X+1, X+2*n+1); sort(Y+1, Y+2*n+1); for(int i=1; i<=n; i++) { for(int x=1; x<2*n; x++) { if(sq[i].x2 <= X[x]) break; if(sq[i].x1 >= X[x+1]) continue; for(int y=1; y<2*n; y++) { if(sq[i].y2 <= Y[y]) break; if(sq[i].y1 >= Y[y+1]) continue; G[x][y] = true; } } } for(int x=1; x<2*n; x++) { long long s = X[x+1] - X[x]; for(int y=1; y<2*n; y++) if(G[x][y]) ans += s * (Y[y+1] - Y[y]); } cout << ans << endl; return 0; }
区间覆盖
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Interval {
int L, R;
bool operator <(const Interval b) const { //重载运算符-按左端点比较
return L < b.L;
}
};
Interval I[20001];
int N, ans;
int main() {
int last;
scanf("%d", &N);
for(int i=1; i<=N; i++) scanf("%d%d", &I[i].L, &I[i].R);
sort(I+1, I+N+1); //离散
last = -1e9-1;
for(int i=1; i<=N; i++) {
if(I[i].R <= last) continue; //if 当前区间被包含
if(I[i].L > last) ans += I[i].R - I[i].L;//if 与上个区间不重合
else ans += I[i].R - last; //if 与上个区间有重合部分
last = I[i].R;
}
printf("%d\n", ans);
return 0;
}
相关文章推荐
- poj1151--计算几何+离散化
- POJ 2318 TOYS 计算几何 线段相交
- POJ 3304 计算几何
- poj 2074 Line of Sight(计算几何)
- 【模板】计算几何
- 51nod 1265 四点共面(计算几何)
- Hdu 3365 New Ground(计算几何)
- ACdream 1106 游泳水平有限的瑶瑶 (计算几何)(点到直线的最短距离)
- 【计算几何】HDU 2108 Shape of HDU 凸包
- hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)
- LA 7072 Signal Interference 计算几何 圆与多边形的交
- [专题学习][计算几何]
- sgu209:Areas(计算几何)
- usaco Computational Geometry 计算几何
- POJ 1127Jack Straws (计算几何 + 线段相交)
- UESTC1713 无关青云路,无关诗书,无你处,无江湖(计算几何)
- 计算几何模板
- uva That Nice Euler Circuit(计算几何 欧拉公式)
- 【算法杂谈】计算几何题目推荐
- 利用接口和多态性计算几何图形的面积和周长并显示