bzoj1052
Description
Input
Output
一行,输出最小的L值。
Sample Input
0 1
0 -1
1 0
-1 0
Sample Output
HINT
100%的数据,N<=20000
题解
每次对于一些点,我们把它们用一个最小的长方形框起来,把正方形放在四角之一
然后就产生了一个子问题,显然这样做是最优的
二分即可
#include<stdio.h>
#include<iostream>
#define inf 1000000000
#define il inline
using namespace std;
const int N=;
struct P{int x,y;} a[N];
int n,chk[N];
il void cover(int d,int u,int l,int r,int k){
for(int i=;i<=n;i++) if(chk[i]==){
if(l<=a[i].x&&a[i].x<=r&&d<=a[i].y&&a[i].y<=u){
chk[i]=k;
}
}
}
il void uncover(int k){
for(int i=;i<=n;i++)
if(chk[i]==k){
chk[i]=;
}
}
il bool fulfill(){
for(int i=;i<=n;i++)
if(chk[i]==) return ;
return ;
}
il int dfs(int k,int lim){
if(fulfill()) return true;
if(k==) return false;
int u=-inf,d=inf,l=inf,r=-inf,flag=;
for(int i=;i<=n;i++){
if(chk[i]==){
u=max(u,a[i].y);
d=min(d,a[i].y);
l=min(l,a[i].x);
r=max(r,a[i].x);
}
}
/*cout<<k<<" "<<lim<<endl;
for(int i=1;i<=n;i++)
cout<<chk[i]<<" ";
cout<<endl;
cout<<l<<" "<<r<<" "<<d<<" "<<u<<endl;
system("pause");*/
cover(d,d+lim,l,l+lim,k);
if(dfs(k+,lim)) flag=;
uncover(k);
cover(d,d+lim,r-lim,r,k);
if(dfs(k+,lim)) flag=;
uncover(k);
cover(u-lim,u,r-lim,r,k);
if(dfs(k+,lim)) flag=;
uncover(k);
cover(u-lim,u,l,l+lim,k);
if(dfs(k+,lim)) flag=;
uncover(k);
return flag;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
int l=,r=inf,mid;
while(l<r){
mid=(l+r)/;
if(dfs(,mid)) r=mid;
else l=mid+;
}
cout<<r;
return ;
}
bzoj1052的更多相关文章
- 【bzoj1052】覆盖问题
[bzoj1052]覆盖问题 分析 考虑二分\(L\)的值,然后判断3个\(L*L\)能否覆盖所有的点. 这时候出现了两种可能的思路. 思路1 首先,3是一个很小的常数. 我们想:假如能探究出1和2的 ...
- 【BZOJ1052】 [HAOI2007]覆盖问题
BZOJ1052 [HAOI2007]覆盖问题 前言 小清新思维题. 最近肯定需要一些思维题挽救我这种碰到题目只会模板的菜鸡. 这题腾空出世? Solution 考虑一下我们二分答案怎么做? 首先转换 ...
- 【BZOJ1052】覆盖问题(贪心)
[BZOJ1052]覆盖问题(贪心) 题面 BZOJ 洛谷 题解 这题好神仙啊. 很明显可以看出来要二分一个边长. 那么如何\(check\)呢? 我们把所有点用一个最小矩形覆盖, 那么必定每个边界上 ...
- 【二分 贪心】覆盖问题 BZOJ1052 HAOI2007
覆盖问题 bzoj1052 题目来源:HAOI 2007 题目描述 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的 ...
- bzoj1052: [HAOI2007]覆盖问题(二分+构造)
貌似又写出了常数挺优(至少不劣)的代码>v< 930+人AC #49 写了个O(nlogn)貌似比一些人O(n)还快2333333 这题还是先二分答案,check比较麻烦 显然正方形一定以 ...
- [bzoj1052] [HAOI2007]覆盖问题
Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L * L的正方形塑料薄膜 ...
- [BZOJ1052][HAOI2007]覆盖问题 二分+贪心
1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2053 Solved: 959 [Submit][Sta ...
- bzoj1052 [HAOI2007]覆盖问题 - 贪心
Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小 ...
- bzoj1052覆盖问题(二分+贪心)
1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2446 Solved: 1131[Submit][Stat ...
随机推荐
- Hadoop中ssh+IP、ssh+别名免秘钥登录配置
1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...
- 关于C#中async/await中的异常处理(下)-(转载)
上一篇文章里我们讨论了某些async/await的用法中出现遗漏异常的情况,并且谈到该如何使用WhenAll辅助方法来避免这种情况.WhenAll辅助方法将会汇总一系列的任务对象,一旦其中某个出错,则 ...
- go语言之行--包与变量
一.包的概念 包是go语言中不可缺少部分,在每个go源码的第一行进行定义,定义方式是:package "包名",并且该名称是作为调用该包时候所使用的名称. 包的概念总结: 每个 G ...
- # 2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础
2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础 一.原理与实践说明 1.实践具体要求 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML ...
- Selenium 爬取全国水质周报Word
很久没写爬虫了 ,昨天有个学姐说需要爬取水质的一些数据,给了个网站( http://xxfb.hydroinfo.gov.cn/ssIndex.html?type=2&tdsourcetag= ...
- mfc CTabCtrl
知识点: CTabCtrl常用属性 CTabCtrl类常用成员函数 CTabCtrl代码示例 一.CTabCtrl控件属性 Bottom:底部样式 Vertical:垂直样式 与Bottom结合使用, ...
- 【LG1368】工艺
[LG1368]工艺 题面 洛谷 题解 好套路的一道题... 我们倍长这个字符串,然后我们要查询的串就为这个倍长过后串的长度\(n\)一个子串,要求字典序最小 然后就可以非常愉快地后缀排序了 后缀的话 ...
- [APIO2013]机器人[搜索、斯坦纳树]
题意 题目链接 分析 记 g(d,x,y) 表示从 (x,y) 出发,方向为 d 到达的点,这个可以通过记忆化搜索求出,注意如果转移成环(此时向这个方向走没有意义)要特判. 记 f(l,r,x,y) ...
- [HNOI2018]转盘[结论+线段树]
题意 题目链接 分析 首先要发现一个结论:最优决策一定存在一种 先在出发点停留之后走一圈 的情况,可以考虑如下证明: 如果要停留的话一定在出发点停留,这样后面的位置更容易取到. 走超过两圈的情况都可以 ...
- [CF963E]Circles of Waiting[高斯消元网格图优化+期望]
题意 你初始位于 \((0,0)\) ,每次向上下左右四个方向走一步有确定的概率,问你什么时候可以走到 以 \((0,0)\)为圆心,\(R\) 为半径的圆外. \(R\le 50\) 分析 暴力 \ ...