当前位置:网站首页>[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
边栏推荐
- Intelligent transportation is full of vitality. What will happen in the future? [easy to understand]
- How does codesonar help UAVs find software defects?
- 使用高斯Redis实现二级索引
- 恶魔奶爸 B2 突破语法,完成正统口语练习
- Mahout-Pearson correlation的实现
- Cocos2d-x game archive [easy to understand]
- Ubuntu安装mysql8遇到的问题以及详细安装过程
- 神兵利器——敏感文件发现工具
- 最新版本的CodeSonar改进了功能安全性,支持MISRA,C ++解析和可视化
- Lingyun going to sea | yidiantianxia & Huawei cloud: promoting the globalization of Chinese e-commerce enterprise brands
猜你喜欢

Dachang classic pointer written test questions

上海交大最新《标签高效深度分割》研究进展综述,全面阐述无监督、粗监督、不完全监督和噪声监督的深度分割方法
![嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]](/img/af/61b384b1b6ba46aa1a6011f8a30085.png)
嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]

Airiot helps the urban pipe gallery project, and smart IOT guards the lifeline of the city

软件缺陷静态分析 CodeSonar 5.2 新版发布

Mongodb learn from simple to deep

机械臂速成小指南(十一):坐标系的标准命名

Measure the height of the building

CodeSonar如何帮助无人机查找软件缺陷?

不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统
随机推荐
机械臂速成小指南(十一):坐标系的标准命名
静态测试工具
Tensorflow2. How to run under x 1 Code of X
Cantata9.0 | new features
Make this crmeb single merchant wechat mall system popular, so easy to use!
DataTable数据转换为实体
uva 12230 – Crossing Rivers(概率)「建议收藏」
测量楼的高度
恶魔奶爸 B2 突破语法,完成正统口语练习
Onespin | solve the problems of hardware Trojan horse and security trust in IC Design
HDU4876ZCC loves cards(多校题)
【C语言】指针进阶---指针你真的学懂了吗?
Is it safe to open an account online now? I want to know where I can open an account in Nanning now?
权限不足
Nebula importer data import practice
程序猿赚的那点钱算个P啊!
刚开户的能买什么股票呢?炒股账户安全吗
字符串中数据排序
How to meet the dual needs of security and confidentiality of medical devices?
最新版本的CodeSonar改进了功能安全性,支持MISRA,C ++解析和可视化