BZOJ_1052_[HAOI2007]_覆盖问题_(二分+贪心)
描述
http://www.lydsy.com/JudgeOnline/problem.php?id=1052
网格图,给出\(n\)个点,要求用3个边长相同的正方形覆盖所有点,求最小边长.
分析
显然是二分+判断可行性.
如何判断可行性呢?我们注意到是3个正方形.为什么是3个?
我们先找出覆盖所有点的最小距形,那么距形的四条边必须有正方形贴着,而又是3个正方形,所以至少要有1个正方形同时贴着两条边.
1.贴着的边相对
这样的话三个正方形都同时贴着相对的两条边,比如是上下两条边,那么贴着左边的那个正方形就贴着3条边,在距形的一角.
2.贴着的边相邻
这样的话这个正方形就在距形的一角.
所以我们递归的把正方形放在距形的一角,然后去掉已经覆盖了的点,继续放正方形即可.
#include <bits/stdc++.h>
#define fst first
#define scd second
using namespace std;
inline int read(int &x){x=;int k=;char c;for(c=getchar();c<''||c>'';c=getchar())if(c=='-')k=-;for(;c>=''&&c<='';c=getchar())x=x*+c-'';return x*=k;} typedef pair <int,int> P;
const int maxn=+,INF=0x7fffffff;
int n,ml,mr,mu,md;
P a[maxn];
bool vis[maxn];
bool dfs(int x,int t){
if(t==) return max(md-mu,mr-ml)<=x;
P b[][];
b[][]=P(ml,mu),b[][]=P(ml+x,mu+x);
b[][]=P(ml,md-x),b[][]=P(ml+x,md);
b[][]=P(mr-x,mu),b[][]=P(mr,mu+x);
b[][]=P(mr-x,md-x),b[][]=P(mr,md);
for(int i=;i<;i++){
int tl=ml,tr=mr,tu=mu,td=md;
int tmp[maxn];
for(int j=;j<=n;j++) tmp[j]=vis[j];
for(int j=;j<=n;j++)
if(a[j].fst>=b[i][].fst&&a[j].fst<=b[i][].fst&&a[j].scd>=b[i][].scd&&a[j].scd<=b[i][].scd)
vis[j]=true;
mu=ml=INF; mr=md=-INF;
for(int j=;j<=n;j++)if(!vis[j]){
mu=min(mu,a[j].scd); md=max(md,a[j].scd);
ml=min(ml,a[j].fst); mr=max(mr,a[j].fst);
}
bool flag=dfs(x,t+);
ml=tl,mr=tr,mu=tu,md=td;
for(int j=;j<=n;j++) vis[j]=tmp[j];
if(flag) return true;
}
return false;
}
inline void solve(){
int l=,r=max(md-mu,mr-ml);
while(l<r){
for(int i=;i<=n;i++)if(vis[i]) puts("!");
int mid=l+(r-l)/;
if(dfs(mid,)) r=mid;
else l=mid+;
}
printf("%d\n",l);
}
inline void init(){
read(n);
mu=ml=INF,mr=md=-INF;
for(int i=;i<=n;i++){
read(a[i].fst), read(a[i].scd);
ml=min(ml,a[i].fst); mr=max(mr,a[i].fst);
mu=min(mu,a[i].scd); md=max(md,a[i].scd);
}
}
int main(){
init();
solve();
return ;
}
1052: [HAOI2007]覆盖问题
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 1540 Solved: 705
[Submit][Status][Discuss]
Description
Input
Output
一行,输出最小的L值。
Sample Input
0 1
0 -1
1 0
-1 0
Sample Output
HINT
100%的数据,N<=20000
Source
BZOJ_1052_[HAOI2007]_覆盖问题_(二分+贪心)的更多相关文章
- 【BZOJ】【1052】【HAOI2007】覆盖问题
二分+贪心 首先二分L,转化成判定问题…… 但是判定不会判啊QAQ orz hzwer,用一个最小的矩形框住所有点后,直接往矩形的角上摆正方形……第二个用同样的方法摆,最后判一下剩下的能否被完全覆盖 ...
- 用户管理_组管理_权限管理.ziw
2017年1月10日, 星期二 用户管理_组管理_权限管理 用户管理: useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage ...
- BZOJ 1108: [POI2007]天然气管道Gaz 性质分析_小结论_巧妙
Description Mary试图控制成都的天然气市场.专家已经标示出了最好的天然气井和中转站在成都的地图.现在需要将中转 站和天然气井连接起来.每个中转站必须被连接到正好一个钻油井,反之亦然. M ...
- $bzoj2067\ szn$ 二分+贪心
正解:二分+贪心 解题报告: 传送门$QwQ$ 题目大意就说有一棵树,然后要用若干条线覆盖所有边且不能重叠.问最少要用几条线,在用线最少的前提下最长的线最短是多长. 昂首先最少用多少条线这个还是蛮$e ...
- Spring_MVC_教程_快速入门_深入分析
Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.
- 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异
Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ...
- CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站
CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...
随机推荐
- silverlight 控件自定义样式 实现方法
1:在app.xaml中加入需实现的样式,如: <Application.Resources> <Style x:Key="NodeStyle" TargetTy ...
- Ext学习-高级组件介绍
在这一部分的学习中,主要是学习一些比较特殊的组件. 1.图表 2.日历 3.颜色,日期,时间的选择器 4.滑动条 5.各种工具类 参考文档:http://docs.sencha.com/extjs/4 ...
- WEB前端常用的测试工具
一.QUnit 前端测试工具 QUnit是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件.Qunit是Jquery的单元测试框架, ...
- 【DP/二分】BZOJ 1863:[Zjoi2006]trouble 皇帝的烦恼
863: [Zjoi2006]trouble 皇帝的烦恼 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 465 Solved: 240[Submit][ ...
- 【单调栈】Bzoj 1012: 最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 6255 Solved: 2676[Submi ...
- window dos 设置网络
->netsh ->pushd interface ip ->set address "本地连接" static 192.168.1.2 255.255.255. ...
- 漫谈CGI FastCGI WSGI
作者:auxten链接:https://zhuanlan.zhihu.com/p/20054757来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CGI(Common ...
- D&F学数据结构系列——二叉堆
二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树.同二叉查找树一样,堆也有两个性质,即结构性和堆序性.对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿 ...
- JDK与JRE
dos命令行中常见的命令: 1.dir:列出当前目录下的文件以及文件夹 2.md:创建目录(即文件夹) |-----C:\>md kkk(在C盘下创建了一个名为kkk的文件夹) 3.rd:删除目 ...
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...