当前位置: 首页 > news >正文

L2-2 巴音布鲁克永远的土(二分+并查集)

思路:我们可以二分答案,然后判断当前答案合不合理。

对于判断答案合理,可以用并查集,看mid能否把所有检查点连进一个集合中,枚举每个结点,如何当前结点周围的四个方向可以连的话,就加进同一个集合,最后判断所有检查点是否是同一个祖先即可。

代码:

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
#define endl '\n'
#define pq priority_queue
using namespace std;
typedef pair<int,int> pii;
const int N = 1010;
int n, m;
int a[N][N], f[N * N];
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
vector<int>jc;
int id(int i, int j){return i * m + j;
}int find(int x){if(x != f[x])f[x] = find(f[x]);return f[x];
}bool check(int mid){for(int i = 0;i < n * m;i ++)f[i] = i;for(int i = 0;i < n; i++){for(int j = 0;j < m;j ++){for(int k = 0;k < 4;k ++){int x = i + dx[k], y = j + dy[k];if(x < 0 || y < 0 || x > n || y > m)continue;if(abs(a[x][y] - a[i][j]) <= mid){f[find(id(i, j))] = find(id(x, y));}}}}for(int i = 1;i < jc.size();i ++){if(find(jc[i]) != find(jc[i - 1]))return false;}return true;
}void solve(){cin >> n >> m;for(int i = 0;i < n;i ++){for(int j = 0;j < m;j ++){cin >> a[i][j];}}for(int i = 0;i < n;i ++){for(int j = 0;j < m;j ++){int x;cin >> x;if(x)jc.push_back(id(i, j));}}int l = 0, r = 1e9 + 10;while(l + 1 != r){int mid = l + r >> 1;if(check(mid))r = mid;elsel = mid;}cout << r;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;while(t--){solve();}return 0;
}

http://www.lryc.cn/news/336463.html

相关文章:

  • Spring Cloud学习笔记:Eureka简介,Eureka简单样例
  • 【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)
  • 快速排序:深入解析其原理、实现与性能特性
  • 一文看懂Mac地址
  • 2024.4.10作业
  • python - Django创建项目
  • WPF —— 动画缩放变换
  • SQL注入---盲注
  • PlanUML和Mermaid哪个好?
  • leetcode 343. 整数拆分
  • 【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。
  • 学透Spring Boot — 004. Spring Boot Starter机制和自动配置机制
  • 面试算法-170-二叉树的最大深度
  • 【数据结构】哈希
  • Kubernetes(k8s)监控与报警(qq邮箱+钉钉):Prometheus + Grafana + Alertmanager(超详细)
  • STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)
  • 第十五篇:Mybatis
  • 【MacBook系统homebrew镜像记录】
  • 深拷贝总结
  • RabbitMQ在云原生环境中部署和应用实践
  • flask 后端 + 微信小程序和网页两种前端:调用硬件(相机和录音)和上传至服务器
  • 蓝桥杯嵌入式(G431)备赛笔记——ADC+LCD
  • 最近公共祖先(LCA)
  • ABBYY FineReader15免费电脑OCR图片文字识别软件
  • 2024年第十七届 认证杯 网络挑战赛 (A题)| 保暖纤维的保暖能力 |数学建模完整代码+建模过程全解全析
  • 算法训练营第37天|LeetCode 738.单调递增的数字 968.监控二叉树
  • Vue+el-table 修改表格 单元格横线边框颜色及表格空数据时边框颜色
  • 大恒相机-程序异常退出后显示被占用
  • 头歌-机器学习 第16次实验 EM算法
  • 电脑启动引导的两种方式