【BZOJ 1052】 1052: [HAOI2007]覆盖问题 (乱搞)
1052: [HAOI2007]覆盖问题
Description
某人在山上种了N棵小树苗。冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小树遮起来。我们不妨将山建立一个平面直角坐标系,设第i棵小树的坐标为(Xi,Yi),3个L*L的正方形的边要求平行与坐标轴,一个点如果在正方形的边界上,也算作被覆盖。当然,我们希望塑料薄膜面积越小越好,即求L最小值。Input
第一行有一个正整数N,表示有多少棵树。接下来有N行,第i+1行有2个整数Xi,Yi,表示第i棵树的坐标,保证不会有2个树的坐标相同。Output
一行,输出最小的L值。
Sample Input
4
0 1
0 -1
1 0
-1 0Sample Output
1HINT
100%的数据,N<=20000
Source
【分析】
为什么黄学长称之为贪心。。?不懂。。
首先我们用一个最小的矩形把所有点框住(这个很容易求吧?),
如果答案的正方形边长等于这个矩形的宽,那么肯定有两个正方形是推到两边的,就是至少有一个正方形的顶点是矩形的顶点。
如果正方形边长小于宽,因为矩形每条边至少有一个点,所以一定有一个正方形覆盖了矩形两条边,那么这个至少也有一个正方形的顶点是矩形的顶点。
大于宽就不用说了吧?
那么我们先二分答案,然后就枚举矩形的四个角,把覆盖的点删掉,递归做子问题就可以了。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 #define Maxn 20010 8 #define INF 0xfffffff 9 10 int mymin(int x,int y) {return x<y?x:y;} 11 int mymax(int x,int y) {return x>y?x:y;} 12 13 struct node 14 { 15 int x,y; 16 int p; 17 }t[Maxn]; 18 19 int n,tot; 20 21 void change(int x,int y,int nw,int L) 22 { 23 for(int i=1;i<=n;i++) if(t[i].x>=x&&t[i].y>=y&&t[i].p==0) 24 { 25 if(t[i].x-x>L||t[i].y-y>L) continue; 26 t[i].p=nw;tot--; 27 } 28 } 29 30 void change2(int nw) 31 { 32 for(int i=1;i<=n;i++) if(t[i].p==nw) 33 { 34 t[i].p=0; 35 tot++; 36 } 37 } 38 39 bool check(int L,int nw) 40 { 41 if(tot==0) return 1; 42 int x1=INF,x2=-INF,y1=INF,y2=-INF; 43 for(int i=1;i<=n;i++) if(t[i].p==0) 44 { 45 x1=mymin(x1,t[i].x);x2=mymax(x2,t[i].x); 46 y1=mymin(y1,t[i].y);y2=mymax(y2,t[i].y); 47 } 48 if(nw==1) return mymax(x2-x1,y2-y1)<=L; 49 int nx,ny; 50 bool ok=0; 51 nx=x1,ny=y1;change(nx,ny,nw,L); 52 if(check(L,nw-1)) ok=1;change2(nw); 53 if(ok) return 1; 54 55 nx=x1,ny=y2-L;change(nx,ny,nw,L); 56 if(check(L,nw-1)) ok=1;change2(nw); 57 if(ok) return 1; 58 59 nx=x2-L,ny=y1;change(nx,ny,nw,L); 60 if(check(L,nw-1)) ok=1;change2(nw); 61 if(ok) return 1; 62 63 nx=x2-L,ny=y2-L;change(nx,ny,nw,L); 64 if(check(L,nw-1)) ok=1;change2(nw); 65 if(ok) return 1; 66 return 0; 67 } 68 69 int main() 70 { 71 scanf("%d",&n); 72 for(int i=1;i<=n;i++) 73 { 74 scanf("%d%d",&t[i].x,&t[i].y); 75 t[i].p=0; 76 } 77 int l=1,r=INF; 78 tot=n; 79 while(l<r) 80 { 81 int mid=(l+r)>>1; 82 if(check(mid,3)) r=mid; 83 else l=mid+1; 84 } 85 printf("%d\n",l); 86 return 0; 87 }
View Code
2017-02-22 14:07:58
转载于:https://www.cnblogs.com/Konjakmoyu/p/6428623.html
【BZOJ 1052】 1052: [HAOI2007]覆盖问题 (乱搞)相关推荐
- BZOJ 1124 [POI2008]枪战Maf 贪心+乱搞
题意:略. 方法:贪心+乱搞. 解析: 今天做的题里面最难的了- 分连通块进行考虑. 一个连通块最多死多少呢? 一个点 -> 死一个 一个环 -> 死环上点个数-1个 一个环加上内向树 - ...
- bzoj 1052: [HAOI2007]覆盖问题(二分+贪心)
1052: [HAOI2007]覆盖问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2028 Solved: 950 [Submit][Sta ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- 【BZOJ】 2049 SDOI洞穴探险 【乱搞】
不知怎么回事我的电脑上BZOJ挂了,鞠大神的oj也挂了..... 本来要用LCT,但书上说乱搞就不T,我之前却T了,于是我感叹BZOJ数据质量真好...然后就没有然后了 直到今天我又看到一个神犇说,乱 ...
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
3578: GTY的人类基因组计划2 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 367 Solved: 159 [Submit][Status ...
- hash进阶:使用字符串hash乱搞的姿势
前言 此文主要介绍hash的各种乱搞方法,hash入门请参照我之前这篇文章 不好意思hash真的可以为所欲为 在开头先放一下题表(其实就是我题解中的hash题目qwq) 查询子串hash值 必备的入门 ...
- 揭秘刘安和兄弟连不是骗子吗,手法如此传销,培训机构竟利用网络营销上市 现在互联网这么大,娱乐界乱搞,教育界还乱搞,如今泛媒体时代,人人都是KOL,每个人都是意见领袖,一人一个自媒体号,人人都可以发飙
揭秘刘安和兄弟连不是骗子吗,手法如此传销,培训机构竟利用网络营销上市 现在互联网这么大,娱乐界乱搞,教育界还乱搞,如今泛媒体时代,人人都是KOL,每个人都是意见领袖,一人一个自媒体号,人人都可以发飙, ...
- 【BZOJ5288】【HNOI2018】游戏(乱搞?)
题面 BZOJ 洛谷 题面自己到洛谷上看把 题解 考场上乱搞拿到了 90 90分,简直不敢相信. 回家把代码再交了一份直接就 AC AC了??? O(n2) O(n^2)的做法应该很容易想 对于每个点 ...
最新文章
- 你,保持童心;我,帮你保持童颜
- java中的volatile和synchronized
- Docker-Centos7安装Docker CE 及在Docker CE中安装RabbitMQ
- nginx 读取文件_Nginx的提升php上传下载
- 布隆过滤器 redis_redis布隆过滤器
- python创建目录保存文件
- 某公司PIX 520防火墙系统和NAT的实施
- shellcode编写技巧
- Markdown数学公式、特殊字符、上下标、积分、分式/根式 亲测有效
- 报名国电没有计算机二级,想进入国电,捧起“铁饭碗”?没问题,这几个专业助你成功...
- rgbdslam_v2编译过程中引起的needed by错误
- Vray for UE4 (一)
- 谷歌地图地名显示繁体字_谷歌地图卫星地图怎么取消地名还有路线
- 浪曦struts2学习笔记2
- 鸟哥Linux私房菜 第五章 文件权限与目录配置
- 用质谱法定义 HLA-II 配体处理和结合规则可增强癌症表位预测
- 【计算机毕业设计】小型OA系统设计与实现Springboot
- 微信公众号迁移公证、迁移申请函办理方法
- 暑期2020“大咖说开源” | 陈莉君:Linux从入门到深入内核有多远
- erlang httpc