题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1052


大概自己YY了个贪心然后过了...

二分答案,考虑如何check:

找到一个最小的矩形使得没有覆盖过的点都在这个矩形内,然后猜一下(显然)我要选择的${L*L}$的正方形一定是和这个矩形的某一个顶点公共这个顶点的。

这就好办了,直接枚举正方形的顶点在矩形的$4$个顶点中的哪一个,搜索即可。

复杂度:${O(4^{3}n*log_{2}^{(1e9)})}$

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
#define maxn 100010
#define inf 0x7fffffff
#define llg int
#define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
llg n,m,lx,ly,rx,ry,mid;
bool bj[maxn],pd; struct node
{
llg x,y;
}po[maxn]; void find_max()
{
lx=inf; ly=-inf;
rx=-inf; ry=inf;
for (llg i=;i<=n;i++)
if (!bj[i])
{
lx=min(lx,po[i].x); rx=max(rx,po[i].x);
ly=max(ly,po[i].y); ry=min(ry,po[i].y);
}
} void ss(llg cs)
{
if (pd) return ;
find_max();
llg LX=lx,LY=ly,RX=rx,RY=ry;
if (lx==inf) {pd=true; return ;}
if (cs>=) return ;
for (llg k=;k<=;k++)
{
llg x,y;
if (k==) x=LX,y=LY;
if (k==) x=RX,y=RY;
if (k==) x=LX,y=RY;
if (k==) x=RX,y=LY;
vector<llg>c;
c.clear();
for (llg i=;i<=n;i++)
if (abs(po[i].x-x)<=mid && abs(po[i].y-y)<=mid && !bj[i])
{
bj[i]=;
c.push_back(i);
}
ss(cs+);
llg w=c.size();
for (llg i=;i<w;i++) bj[c[i]]=;
}
} bool check()
{
pd=false;
ss();
return pd;
} int main()
{
yyj("bzoj1052");
cin>>n;
for (llg i=;i<=n;i++) scanf("%d%d",&po[i].x,&po[i].y);
llg l=,r=1e9,ans;
while (l<=r)
{
mid=(l+r)>>;
if (check()) {r=mid-; ans=mid;} else l=mid+;
}
cout<<ans;
return ;
}

【BZOJ】1052: [HAOI2007]覆盖问题的更多相关文章

  1. BZOJ 1052: [HAOI2007]覆盖问题

    BZOJ 1052: [HAOI2007]覆盖问题 题意:给定平面上横纵坐标在-1e9~1e9内的20000个整数点的坐标,用三个大小相同边平行于坐标轴的正方形覆盖(在边界上的也算),问正方形的边长最 ...

  2. [BZOJ 1052][HAOI2007]覆盖问题(二分答案)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1052 分析: 挺有想法的一道题,先二分答案ans,主要是判断的问题. 首先可以弄出把所 ...

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

    标题效果:特定n点.涵盖所有的点与同方三面.斧头要求方垂直边界,最小平方的需求方长值 最大值至少.答案是很明显的二分法 但验证是一个问题 考虑仅仅有三个正方形,故用一个最小矩形覆盖这三个正方形时至少有 ...

  4. 【以前的空间】bzoj 1052 [HAOI2007]覆盖问题

    这道题的思路挺简单的……就是可以证明如果要覆盖一个区域内的点,那么一定有一个正方形在这“区域内的点所围成的最大矩形的四个角中的一个”(不要吐槽很多的“的”……),对于长度r是否可以覆盖整个区域内的点, ...

  5. 【BZOJ 1052】 1052: [HAOI2007]覆盖问题 (乱搞)

    1052: [HAOI2007]覆盖问题 Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄 膜把这些小树遮盖起来,经过一番长久的 ...

  6. 【BZOJ】1052: [HAOI2007]覆盖问题(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1052 首先膜拜题解orz,表示只能想到二分... 贪心就是每一次找到一个最小的能包围所有点的矩阵,然 ...

  7. 1052: [HAOI2007]覆盖问题 - BZOJ

    Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小 ...

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

    1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2053  Solved: 959 [Submit][Sta ...

  9. 二分判定 覆盖问题 BZOJ 1052

    //二分判定 覆盖问题 BZOJ 1052 // 首先确定一个最小矩阵包围所有点,则最优正方形的一个角一定与矩形一个角重合. // 然后枚举每个角,再解决子问题 #include <bits/s ...

随机推荐

  1. FAQ About WOYO PDR007 Dent Removal Heat Induction System

    WOYO PDR 007 is a dent repair tool for auto maintence. WOYO PDR007 Auto Body Paintless Dent Repair K ...

  2. linux上限值网速、限值带宽

    Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制. Linux流量控制的基本原理如下图所示. 接收包 ...

  3. 记账本微信小程序开发三

    一.制作登陆界面: 更改全局配置,改颜色,名称: 界面 格式 登录界面 二.页面的跳转 按钮的设置 注册事件 结果

  4. 监控网卡流量脚本(Python)

    #!/usr/bin/env python# coding: utf-8# author: Xiao Guaishou try:    import psutilexcept ImportError: ...

  5. FJOI2019游记

    应该是.....尽力了吧 day0:下午到酒店,晚上魔兽(with lyc)+雀魂.心里也清楚,今年只是来观光的. day1:上午暴力打完走人.下午和晚上魔兽+雀魂+300. day2:暴力打到一半拉 ...

  6. CSM与UEFI

    最近公司产品部购置一批新电脑,但是预装的win10不能保证兼容老平台软件,于是安装win7系统的任务就落到了我的手中. 观察参数,是8代的U,产品说运维说无能为力,装不了win7.我在网上搜了一下,是 ...

  7. spring使用@Value标签读取.properties文件的中文乱码问题的解决

    最近测试某个老系统的时候,启动的时候发@Value注入的中文是乱码,文件使用GBK/UTF-8的时候均会出现乱码问题,但是spring配置文件里面注入的占位符并没有这个问题,bean文件设置了file ...

  8. Qone 自动删除说说脚本

    请看图 script var delay = 1000; function del() { document.querySelector('.app_canvas_frame').contentDoc ...

  9. py4CV例子2.5车牌识别和svm算法重构

    1.什easypr数据集:  ) ) ] all_label_list = temp[:, ] n_sample = , ) matcher = cv2.FlannBasedMatcher(flann ...

  10. 20145311 王亦徐《网络对抗技术》 逆向及BOF进阶实践

    20145311<网络对抗技术>逆向及BOF进阶实践 学习目的 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈 ...