【HAOI 2007 覆盖问题】 二分

【题解】覆盖问题 BZOJ1052 HAOI2007 二分 
 
 题目描述
 某 人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用 3个LL的正方形塑料薄膜将小树遮起来。我们不妨将山建立一个平面直角坐标系,设第i棵小树的坐标为(Xi,Yi),3个LL的正方形的边要求平行与坐标 轴,一个点如果在正方形的边界上,也算作... 阅读详情

题解

二分正方形面积,贪心选取最优的情况,算出所有未覆盖的点的最小的矩形。那么正方形每次覆盖一个角的情况是最优,覆盖完一个角后问题又转换成了子问题,最后只要判断是否符合3个正方形即可。
在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

int n;
const int maxn = 2e4+5;
struct Point {
	ll x, y;
	void read() {
		ll _x,_y;
		scanf("%lld%lld", &_x, &_y);
		this->x = _x; this->y = _y;
	}
}p[maxn];
bool cov[maxn];

void cover(ll x1,ll y1, ll x2, ll y2) {
	for(int i = 0; i < n; ++i) {
		if(p[i].x >= x1 && p[i].x <= x2 && p[i].y >= y1 && p[i].y <= y2)
			cov[i] = 1;
	}
}
void uncover(ll x1,ll y1, ll x2, ll y2) {
	for(int i = 0; i < n; ++i) {
		if(p[i].x >= x1 && p[i].x <= x2 && p[i].y >= y1 && p[i].y <= y2)
			cov[i] = 0;
	}
}
void f(ll& x1, ll& y1, ll& x2, ll& y2) {
	y1 = x1 = INT_MAX; y2 = x2 = INT_MIN;
	// cout << x1 <<" " << x2 << endl;
	for(int i = 0; i < n; ++i) {
		if(!cov[i]) {
			x1 = min(x1,p[i].x);
			x2 = max(x2,p[i].x);
			y1 = min(y1,p[i].y);
			y2 = max(y2,p[i].y);
		}
	}
}
bool dfs(int cnt, ll k) {
	ll x1,y1,x2,y2;
	f(x1,y1,x2,y2);
	//cout << x1 <<" " << y1 <<" " << x2 << " " << y2 << endl;
	if(x2-x1 <= k && y2- y1 <= k)
		return true;
	if(cnt == 1 )
		return false;
	bool flag = false;
	cover(x1,y1,x1+k,y1+k);
	flag |= dfs(cnt-1,k);
	uncover(x1,y1,x1+k,y1+k);
	cover(x1,y2-k,x1+k,y2);
	flag |= dfs(cnt-1,k);
	uncover(x1,y2-k,x1+k,y2);
	cover(x2-k,y2-k,x2,y2);
	flag |= dfs(cnt-1,k);
	uncover(x2-k,y2-k,x2,y2);
	cover(x2-k,y1,x2,y1+k);
	flag |= dfs(cnt-1,k);
	uncover(x2-k,y1,x2,y1+k);
	return flag;
}
int main() {
	scanf("%d", &n);
	for(int i = 0; i < n; ++i) 
		p[i].read();
	ll l = 0, r = 1e18, ans = 0;
	// cout << dfs(3,0) << endl;
	while(l <= r) {
		ll mid = (l+r)>>1;
		memset(cov, 0,sizeof cov);
		if(dfs(3,mid)) {
			r = mid-1;
			ans = mid;
		} else 
			l = mid+1;
	}
	cout << ans << endl;
	return 0;
}
[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程 本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。 阅读详情

相关推荐

MSTAR数据集下载地址及处理方法

首先感谢博主冯子材提供下载的百度网盘地址。 在这里为了防止侵权,特此鸣谢,并给出其博客地址。 地址中有MSTAR百度网盘下载地址和需要使用的数据介绍,其中百度网盘中有数据转换工具 https://blog.youkuaiyun.com/taifengzikai/article/details/80600355 工具使用 因为下载得到的数据是二进制文件,需要使用官方提供的工具进行转换,可将其转换为jpeg。 有...

KamenRider 1万+

关于二分图的最大匹配(最小点覆盖)问题的资料整理

关于二分图最大匹配(最小点覆盖)问题的资料整理(一) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://programmers-in.blogbus.com/logs/47011285.html 用匈牙利算法求二分图的最大匹配 转自http://imlazy.ycool.com/post.1603708.html 什么

飞雪---晨 2134

【ROS学习笔记】8.话题消息(Message)的定义与使用

ROS学习笔记8——话题消息(Message)的定义与使用

takedachia的博客 9547

二分图的覆盖与独立集

二分图的覆盖与独立集

m0_55341679的博客 286

DeepMD-kit描述子机制解析:从原子坐标到不变性特征

本文深入解析DeepMD-kit描述子机制,详细阐述如何将原子坐标转换为具有平移、旋转和排列不变性的特征表示。探讨了se_e2_a、se_e3等不同描述子的适用场景及性能优化技巧,帮助读者掌握这一关键技术在分子模拟中的应用实践。

weixin_42520661的博客 340

环境配置与基础教程:2026大厂标准:使用 DVC (Data Version Control) 实现 YOLO 数据集版本控制全链路管理

本文介绍了使用DVC 3.0对YOLO数据集进行全链路版本控制的方法。主要内容包括: DVC 3.0的核心增强:内容块级缓存去重、并行云传输、AI智能体元数据跟踪等新特性,可显著提升YOLO数据集管理效率。 环境配置:详细说明DVC 3.0的安装步骤、项目初始化方法以及远程存储配置方案(支持S3、GCS、Azure等多种存储后端)。 目录结构规范:提供符合大厂MLOps标准的项目目录结构设计。 实战操作: 原始数据版本化 多格式标注数据版本控制 版本切换方法 优势说明:DVC通过哈希指针机制管理大型数据集,

ZXSXJ的博客 148

图论——二分图——最小点覆盖

最小点集覆盖 == 最大匹配 ①最小点集覆盖<=最大匹配, 假设最小点集覆盖为n, 那么一定能构造出一个为n的匹配, 显然这个匹配<= 最大匹配 ②最小点集覆盖 >= 最大匹配。 假设最大匹配为n,所以肯定有n条边,他们的端点互不相同。 因此我们要覆盖这n条边至少要n个定点。 所以 最小点集覆盖>= 最大匹配。 综上: 最小点集覆盖 == 最大匹配 所以可以通过二分图匹...

T.J的博客 1万+

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

【二分 贪心】覆盖问题 BZOJ1052 HAOI2007

覆盖问题 bzoj1052 题目来源:HAOI 2007 题目描述 某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小树遮起来。我们不妨将山建立一个平面直角坐标系,设第i棵小树的坐标为(Xi,Yi),3个L*L的正方形的边要求平行与坐标轴,一个点如果在正方形...

C@bMv7GRVt)Q 425

【软考中级网络工程师】知识点之 ICMP 协议

本文聚焦软考中级网络工程师必备的 ICMP 协议知识,先概述其在 TCP/IP 协议族网络层的地位与无连接特性,再阐述差错报告、网络诊断等功能。解析报文格式,详解差错与查询类报文类型及工作机制,还介绍其在 Ping、Traceroute 命令中的应用,分析常见攻击与防范措施,最后总结核心要点,为网络工程师学习和应用 ICMP 协议提供全面指导。

邓邓子的博客 1402

高通IPA硬件加速介绍

‌ 高通IPA (Internet Protocol Accelerator)模块是一种硬件加速模块,由高通公司(Qualcomm)提供,主要用于优化移动设备上的网络数据传输,特别是通过 LTE 、 5G 等移动网络的数据传输‌‌。IPA模块通过硬件加速,显著提高了数据传输的速度和效率,同时降低了设备的功耗,并提供了更稳定的网络连接,减少了数据传输中的丢包和延迟‌。

四儿家的小祖宗的博客 1622

「二分答案 + 搜索」[HAOI2007]覆盖问题

[HAOI2007]覆盖问题 题目链接:[HAOI2007]覆盖问题 题目大意 给你\(n\)个坐标,再给你3个\(l \times l\)的矩阵,让你用这些矩阵去包含这些点,要求是将所有点都包含,我们要求\(l\)的最小值 题目题解 想到二分了,不过没想到怎么爆搜 看了下题解,妙啊妙啊,牛逼 每次二分一个 \(l\) 值作为我们想要的矩阵边长,然后由树的坐标我们可能可以找到比原平面直角...

bachayou2102的博客 253

【unity实战】Unity游戏开发:如何用ScriptableObject与序列化多态实现可复用的模块化效果系统?

本文介绍了两种实现卡牌游戏效果系统的模块化设计方案。方案一使用ScriptableObject创建独立的效果资产,通过组合实现不同效果,优点是数据可复用、可视化编辑,缺点是同类不同参数效果需创建大量SO文件。方案二利用SerializeReference特性直接嵌套效果实例,避免SO文件过多,但需要插件支持编辑器多态显示。两种方案都将效果与卡牌解耦,提高了代码复用性和扩展性,解决了硬编码带来的重复、维护困难和扩展不便等问题。开发者可根据项目需求选择合适方案,或结合两者优势构建更灵活的系统。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 436

【BZOJ1052】【HAOI2007】覆盖问题 二分+深搜check

题解:乱搞。 就是搜每个正方形的位置(一定在一个角,证明自己想想吧,很容易但是不算太好写) 代码: #include #include #include #include #define N 20100 #define inf 0x3f3f3f3f using namespace std; struct Point { int x,y; Point(int _x=0,

辗转山河弋流歌 1323

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

bzoj 1052: [HAOI2007]覆盖问题 (二分+dfs)

1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1611  Solved: 741 [Submit][Status][Discuss] Description   某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄 膜把这些小树遮盖起来,经过一番

clover_hxy的博客 491

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[BZOJ1052][HAOI2007]覆盖问题 二分+贪心

1052: [HAOI2007]覆盖问题 Time Limit: 10 SecMemory Limit: 162 MB Submit: 2053Solved: 959 [Submit][Status][Discuss] Description   某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄 膜把这些小树遮盖起来,经过一番...

weixin_30655219的博客 113

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

bzoj 1052: [HAOI2007]覆盖问题(二分+贪心)

1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2028  Solved: 950 [Submit][Status][Discuss] Description   某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久

加载中... 533

BZOJ 1052 HAOI2007 覆盖问题 二分答案+DFS

题目大意:给定n个点,用三个边长相同的正方形覆盖所有点,要求正方形边界与坐标轴垂直,求正方形边长的最小值 最大值最小,很明显二分答案 但是验证是个问题 考虑只有三个正方形,故用一个最小矩形覆盖这三个正方形时至少有一个在角上 若有四个正方形该结论不成立 于是我们采用DFS的方式 每次用一个最小的矩形覆盖所有的点,枚举矩形的四个角 将正方形填进去 由于最大深度是3,所以时间上完全可以承受

世界 1737

【二分+贪心】BZOJ1052: [HAOI2007]覆盖问题

题目概述 有 nnn 个点,用 333 块 L×LL×LL\times L 的布盖住所有点,求最小的 LLL 。 解题报告 这是道套路贪心假题……首先二分将求最优解问题转换为判定问题,然后我们找出盖住所有点的最小矩阵,则第一块布一定是盖在这个矩阵的四个角上。 为什么?因为最边上的点一定要盖住的,那么莫不如就贴着最边上的点盖,套路的贪心想法…… 第二块布也这么盖,第三块布直接判断就行...

ZigZagK的博客 660

[BZOJ1052][HAOI2007]覆盖问题(二分+dfs)

题目描述传送门题解可以发现一个非常重要的性质:如果我们确定了在一定范围内有一些点,然后用边长为常数k(<边界范围)的三个正方形去覆盖它们的话,如果有合法的方案,那么一定存在至少一个正方形,它的两条边分别卡在两个边界上。 这个性质非常容易证明。因为如果确定是上下左右的边界,那么每一个边界上至少有一个点需要去覆盖。然而我们只有三个正方形,若想要覆盖这四个点,一定存在一个正方形覆盖了两个点,那么它就一定

zyf2000 782

【题解】洛谷 P2218 [HAOI2007] 覆盖问题 [二分 + 思维]

Believe you can and you’re halfway there.

Isaac Regulus的博客 399

bzoj1052: [HAOI2007]覆盖问题(二分+搜索)

题目传送门 。 解法: 二分答案+搜索判断。 贪心思想正方形肯定刚刚好覆盖到边边。 那我们先手动删除一个正方形(四个角任选) 然后在判断下剩下的点是否都分别在两个正方形内就好了。。 代码实现: #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include&lt;iostream&g...

Hanks_o的博客 362

BZOJ 1052: [HAOI2007]覆盖问题 二分, 贪心

Description   某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄 膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小树遮起来。我们不妨将山建 立一个平面直角坐标系,设第i棵小树的坐标为(Xi,Yi),3个L*L的正方形的边要求平行与坐标轴,一个点如果在 正方形的边界上,也算作被覆盖。当然,我们希望塑料薄

I good vegetable a! 749
上一篇: 【01分数规划】二分+判圈
下一篇: 【线段树】区间gcd
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值