[BZOJ1052]=[BZOJ3760]覆盖问题
来源:互联网 发布:mm漫画软件下载 编辑:程序博客网 时间:2024/05/16 07:07
原题地址
先说自己的逗比方法…
二分答案,把所有点用一个最小的矩形“框”起来,易证矩形的其中一个端点是最优解中正方形的一个端点,然后枚举四个端点后递归处理,差不多了…
然后
OLZ黄学长的
AC code:
#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int N=20010;const int INF=1<<30;int n,L=0,R=INF;bool h[N];struct Poi{ int x,y;}P[N];bool check(int l,int step){ if(step==4){ for(int i=1;i<=n;i++){ if(!h[i]) return 0; } return 1; } int xl=INF,xr=-INF,yl=INF,yr=-INF,X,Y; bool flg=0; for(int i=1;i<=n;i++){ if(!h[i]){ xl=min(xl,P[i].x);xr=max(xr,P[i].x); yl=min(yl,P[i].y);yr=max(yr,P[i].y); } } for(int i=1;i<=4;i++){ if(i==1) X=xl,Y=yl; else if(i==2) X=xr,Y=yl; else if(i==3) X=xl,Y=yr; else X=xr,Y=yr; vector<int> tmp; for(int j=1;j<=n;j++){ if((!h[j])&&X-l<=P[j].x&&P[j].x<=X+l&&Y-l<=P[j].y&&P[j].y<=Y+l){ h[j]=1; tmp.push_back(j); } } flg|=check(l,step+1); for(int j=0;j<(int)tmp.size();j++) h[tmp[j]]=0; } return flg;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&P[i].x,&P[i].y); while(L+1!=R){ int M=(L+R)>>1; if(check(M,1)) R=M; else L=M; } printf("%d\n",R); return 0;}
0 0
- [BZOJ1052]=[BZOJ3760]覆盖问题
- bzoj1052 HAOI2007 覆盖问题
- BZOJ1052【HAOI2007】覆盖问题
- 【bzoj1052】[HAOI2007]覆盖问题
- BZOJ1052: [HAOI2007]覆盖问题
- BZOJ1052: [HAOI2007]覆盖问题
- 暴搜 bzoj1052 覆盖问题
- 【bzoj1052】【HAOI2007】【覆盖问题】【贪心】
- 【BZOJ1052】【HAOI2007】覆盖问题 二分+深搜check
- [BZOJ1052][HAOI2007]覆盖问题(二分+dfs)
- BZOJ1052
- 【BZOJ3760】【最小覆盖】【二分答案】17.1.24 T2 suitang题解
- BZOJ1052【树状数组】
- bzoj1052 二分+贪心
- select元素覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- window.onload覆盖问题!
- <单调队列><二分>4.偷懒的西西
- DirectX11 兰伯特余弦定理(Lambert)
- (LeetCode) String to Integer (atoi) (Java)思路讲解及实现
- Opengl中的三维数学二(点和向量的简单运算)
- 9.Python进阶_动态类型
- [BZOJ1052]=[BZOJ3760]覆盖问题
- POJ 3696 The Luckiest number 欧拉函数 或 BSGS
- C#自定义窗口
- GAL GAME 汉化攻略 辅助篇2 引擎介绍篇
- Fedora查看内核及发行版本号
- Call call=(Call)service.createCall()报错
- 数据库事务隔离级别
- sublime text 3神奇的插件--snippet
- 项目26.3 本月有几天?