二分判定 覆盖问题 BZOJ 1052
//二分判定 覆盖问题 BZOJ 1052
// 首先确定一个最小矩阵包围所有点,则最优正方形的一个角一定与矩形一个角重合。
// 然后枚举每个角,再解决子问题 #include <bits/stdc++.h>
using namespace std;
#define LL long long
typedef pair<int,int> pii;
const int inf = 1e9;
const int MOD =;
const int N =;
#define clc(a,b) memset(a,b,sizeof(a))
const double eps = 1e-;
void fre() {freopen("in.txt","r",stdin);}
void freout() {freopen("out.txt","w",stdout);}
inline int read() {int x=,f=;char ch=getchar();while(ch>''||ch<'') {if(ch=='-') f=-; ch=getchar();}while(ch>=''&&ch<='') {x=x*+ch-'';ch=getchar();}return x*f;} struct node{
int x[],y[];
int num;
}a,b;
int n,mid; void solve2(node &a,int x1,int y1,int x2,int y2){
int cnt=;
for(int i=;i<a.num;i++){
if(a.x[i]<x1||a.x[i]>x2||a.y[i]>y2||a.y[i]<y1){
a.x[cnt]=a.x[i];
a.y[cnt]=a.y[i];
cnt++;
}
}
a.num=cnt;
}
void solve(node &a,int f){
int x1=inf,x2=-inf,y1=inf,y2=-inf;
for(int i=;i<a.num;i++){
x1=min(x1,a.x[i]);
x2=max(x2,a.x[i]);
y1=min(y1,a.y[i]);
y2=max(y2,a.y[i]);
}
if(f==) solve2(a,x1,y1,x1+mid,y1+mid);
if(f==) solve2(a,x2-mid,y1,x2,y1+mid);
if(f==) solve2(a,x1,y2-mid,x1+mid,y2);
if(f==) solve2(a,x2-mid,y2-mid,x2,y2);
}
bool check(){
for(int s=;s<=;s++){
for(int t=;t<=;t++){
b.num=a.num;
for(int i=;i<b.num;i++){
b.x[i]=a.x[i],b.y[i]=a.y[i];
}
solve(b,s),solve(b,t);
int x1=inf,x2=-inf,y1=inf,y2=-inf;
for(int i=;i<b.num;i++){
x1=min(x1,b.x[i]);
x2=max(x2,b.x[i]);
y1=min(y1,b.y[i]);
y2=max(y2,b.y[i]);
}
if(x2-x1<=mid&&y2-y1<=mid) return true;
}
}
return false;
}
int main(){
n=read();
for(int i=;i<n;i++) a.x[i]=read(),a.y[i]=read();
a.num=n;
int l=,r=inf;
while(l<=r){
mid=(l+r)>>;
if(check()) r=mid-;
else l=mid+;
}
printf("%d\n",l);
return ;
}
二分判定 覆盖问题 BZOJ 1052的更多相关文章
- AC日记——[HAOI2007]覆盖问题 bzoj 1052
1052 思路: 二分答案: 二分可能的长度: 然后递归判断长度是否可行: 先求出刚好覆盖所有点的矩形: 可行的第一个正方形在矩形的一个角上: 枚举四个角上的正方形,然后删去点: 删去一个正方形后,递 ...
- BZOJ 1052: [HAOI2007]覆盖问题
BZOJ 1052: [HAOI2007]覆盖问题 题意:给定平面上横纵坐标在-1e9~1e9内的20000个整数点的坐标,用三个大小相同边平行于坐标轴的正方形覆盖(在边界上的也算),问正方形的边长最 ...
- [BZOJ 1052][HAOI2007]覆盖问题(二分答案)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1052 分析: 挺有想法的一道题,先二分答案ans,主要是判断的问题. 首先可以弄出把所 ...
- BZOJ 1052 覆盖问题
Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小 ...
- 1052: [HAOI2007]覆盖问题 - BZOJ
Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小 ...
- [BZOJ]1052 覆盖问题(HAOI2007)
三矩形覆盖问题啊……不过听说FJOI还出过双圆覆盖问题? Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来, ...
- 【以前的空间】bzoj 1052 [HAOI2007]覆盖问题
这道题的思路挺简单的……就是可以证明如果要覆盖一个区域内的点,那么一定有一个正方形在这“区域内的点所围成的最大矩形的四个角中的一个”(不要吐槽很多的“的”……),对于长度r是否可以覆盖整个区域内的点, ...
- 【BZOJ 1052】 1052: [HAOI2007]覆盖问题 (乱搞)
1052: [HAOI2007]覆盖问题 Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄 膜把这些小树遮盖起来,经过一番长久的 ...
- BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
标题效果:特定n点.涵盖所有的点与同方三面.斧头要求方垂直边界,最小平方的需求方长值 最大值至少.答案是很明显的二分法 但验证是一个问题 考虑仅仅有三个正方形,故用一个最小矩形覆盖这三个正方形时至少有 ...
随机推荐
- MySQL sql_mode 说明(及处理一起sql_mode引发的问题)
转自:https://segmentfault.com/a/1190000005936172 1. MySQL 莫名变成了 Strict SQL Mode 最近测试组那边反应数据库部分写入失败,app ...
- Python自学:第五章 列表解析
# -*- coding: GBK -*- squares = [value**2 for value in range(1,11)] print(squares) 输出为: [1, 4, 9, 16 ...
- 能轻松背板子的FWT(快速沃尔什变换)
FWT应用 我不知道\(FWT\)的严格定义 百度百科和维基都不知道给一坨什么****东西** FWT(Fast Walsh Fransform),中文名快速沃尔什变换 然后我也不知道\(FWT\)到 ...
- 给大家介绍一下linux系统高级命令
输出重定向(mip.0834jl.com) ;覆盖文件内容 回声' 123 ' 测试;覆盖原始内容 回声' 123 ' 测试;原始存在(共存) echo 'ken2 '(www.jl0834.com) ...
- C++ strcat_s
{ //如果用strcat() 连接时被连接的字符串是堆内存会 [损坏内存],使堆内存无法释放 建议用strcat_s() }
- day10 nfs服务,nginx负载均衡,定时任务
==================nginx 负载均衡==================== 实现nginx负载均衡的效果,并运用nfs服务共享目录,使所有nginx服务拥有共同的http目录 n ...
- springboot跨域问题解决
package com.qif.xdqdm.config; import org.springframework.context.annotation.Bean; import org.springf ...
- 在ubuntu下编写python
一般情况下,ubuntu已经安装了python,打开终端,直接输入python,即可进行python编写. 默认为python2 如果想写python3,在终端输入python3即可. 如果需要执行大 ...
- 如何给DropDownListFor设置默认值
1.直接赋值: @Html.DropDownListFor(o => o.ParentId, ViewBag.root as IEnumerable<SelectListItem>, ...
- 74CMS漏洞打包(从老博客转)
引子 这套CMS是上个月中做的审计,总共找到几个后台漏洞,可后台getshell,一个逻辑漏洞可任意发短信,还有一个前台注入漏洞.不过发到了某平台上之后,审核又要求我提交利用的poc,所以懒得发去了, ...