当前位置:网站首页>[uvalive 6663 count the regions] (DFS + discretization) [easy to understand]
[uvalive 6663 count the regions] (DFS + discretization) [easy to understand]
2022-07-07 20:59:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
The main idea of the topic :
There are... On a plane n (1<=n<=50) A rectangle . Give you the coordinates of the upper left corner and the lower right corner (0<=x<=10^6, 0<=y<=10^6). Ask how many blocks these rectangles divide the plane .
Their thinking :
because n A very small , It can compress the whole graph . Just don't change the relative position of each side . It has no effect on the answer .
The coordinates of these rectangles can be discretized , Then mark the dot on the side . After that, simple dfs Can .( Pay attention to discretization , There should be at least a distance between the two sides )
Code :
/*
ID: [email protected]
PROG:
LANG: C++
*/
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<fstream>
#include<cstring>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#define INF (1<<30)
#define PI acos(-1.0)
#define mem(a, b) memset(a, b, sizeof(a))
#define For(i, n) for (int i = 0; i < n; i++)
using namespace std;
const int MOD = 1000000007;
typedef long long ll;
using namespace std;
struct node {
int a, b, c, d;
} rec[600];
int x[1200], y[1200];
int xp[1000100], yp[1000100];
int mp[240][240], n;
int lx, ly;
void gao() {
for (int i = 0; i < n; i++) {
int A = xp[rec[i].a];
int B = yp[rec[i].b];
int C = xp[rec[i].c];
int D = yp[rec[i].d];
for (int j = A; j <= C; j++) mp[j][D] = mp[j][B] = 1;
for (int j = D; j <= B; j++) mp[A][j] = mp[C][j] = 1;
}
}
int dir[4][2] = {{0, -1}, {0, 1}, {1, 0}, { -1, 0}};
bool in(int x, int y) {
return (x >= 0 && y >= 0 && x < 2 * lx + 1 && y < 2 * ly + 1);
}
void dfs(int x, int y) {
mp[x][y] = 1;
for (int i = 0; i < 4; i++) {
int xx = x + dir[i][0];
int yy = y + dir[i][1];
if (in(xx, yy) && !mp[xx][yy]) {
dfs(xx, yy);
}
}
}
int main() {
while(scanf("%d", &n) != EOF && n) {
for (int i = 0; i < n; i++) {
scanf("%d%d%d%d", &rec[i].a, &rec[i].b, &rec[i].c, &rec[i].d);
x[2 * i] = rec[i].a;
x[2 * i + 1] = rec[i].c;
y[2 * i] = rec[i].b;
y[2 * i + 1] = rec[i].d;
}
sort(x, x + 2 * n);
sort(y, y + 2 * n);
lx = unique(x, x + 2 * n) - x;
ly = unique(y, y + 2 * n) - y;
for (int i = 0; i < lx; i++) {
xp[x[i]] = 2 * i + 1;
}
for (int j = 0; j < ly; j++) {
yp[y[j]] = 2 * j + 1;
}
memset(mp, 0, sizeof(mp));
gao();
int fk = 0;
for (int i = 0; i < 2 * lx; i++) {
for (int j = 0; j < 2 * ly; j++) if (mp[i][j] == 0) {
dfs(i, j);
fk++;
}
}
cout << fk << endl;
}
return 0;
}Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116289.html Link to the original text :https://javaforall.cn
边栏推荐
- [function recursion] do you know all five classic examples of simple recursion?
- 软件缺陷静态分析 CodeSonar 5.2 新版发布
- Small guide for rapid formation of manipulator (12): inverse kinematics analysis
- MySQL storage expression error
- Dachang classic pointer written test questions
- Lingyun going to sea | saihe & Huawei cloud: jointly help the sustainable development of cross-border e-commerce industry
- 阿里云有奖体验:如何通过ECS挂载NAS文件系统
- Introduction to referer and referer policy
- OneSpin 360 DV新版发布,刷新FPGA形式化验证功能体验
- I have to use my ID card to open an account. Is the bank card safe? I don't understand it
猜你喜欢

Measure the height of the building

Tensorflow2. How to run under x 1 Code of X

CodeSonar网络研讨会
![[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System](/img/76/b725788272ba2dcdf866b28cbcc897.jpg)
[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System

Nebula importer data import practice
MySQL storage expression error

Intelligent software analysis platform embold

使用枚举实现英文转盲文

万字总结数据存储,三大知识点

如何满足医疗设备对安全性和保密性的双重需求?
随机推荐
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
Codeforces 474 F. Ant colony
OneSpin | 解决IC设计中的硬件木马和安全信任问题
静态测试工具
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
Object-C programming tips timer "suggestions collection"
What are the official stock trading apps in the country? Is it safe to use
Solve the problem that the executable file of /bin/sh container is not found
Lingyun going to sea | saihe & Huawei cloud: jointly help the sustainable development of cross-border e-commerce industry
开户还得用身份证银行卡安全吗,我是小白不懂
测量楼的高度
华泰证券可以做到万一佣金吗,万一开户安全嘛
字符串中数据排序
刚开户的能买什么股票呢?炒股账户安全吗
Mahout-Pearson correlation的实现
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
AADL inspector fault tree safety analysis module
Codeforces round 296 (Div. 2) A. playing with paper[easy to understand]
恶魔奶爸 B3 少量泛读,完成两万词汇量+
uva 12230 – Crossing Rivers(概率)「建议收藏」