【bzoj 4581】[Usaco2016 Open]Field Reduction(dfs)
来源:互联网 发布:淘宝上的海藻胶面膜贴 编辑:程序博客网 时间:2024/06/05 20:37
4581: [Usaco2016 Open]Field Reduction
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 84 Solved: 17
[Submit][Status][Discuss]
Description
Farmer John's N cows (5≤N≤50,000) are all located at distinct positions in his two-dimensional fie
ld. FJ wants to enclose all of the cows with a rectangular fence whose sides are parallel to the x a
nd y axes, and he wants this fence to be as small as possible so that it contains every cow (cows on
the boundary are allowed).FJ is unfortunately on a tight budget due to low milk production last qua
rter. He would therefore like to build an even smaller fenced enclosure if possible, and he is willi
ng to sell up to three cows from his herd to make this possible.Please help FJ compute the smallest
possible area he can enclose with his fence after removing up to three cows from his herd (and there
after building the tightest enclosing fence for the remaining cows).For this problem, please treat c
ows as points and the fence as a collection of four line segments (i.e., don't think of the cows as
"unit squares"). Note that the answer can be zero, for example if all remaining cows end up standing
in a common vertical or horizontal line.
给定平面上N个点。现你可以删去至多3个点,接着你需要用一个矩形包含所有的点,点可以在矩形的边上,矩形的
边须与坐标轴平行。最小化矩形的面积并输出这个值。
5 ≤ N ≤ 50000, 1 ≤ X_i, Y_i ≤ 40000
Input
The first line of input contains N.
The next N lines each contain two integers specifying the locati
on of a cow. Cow locations are positive integers in the range 1…40,000.
Output
Write a single integer specifying the minimum area FJ can enclose with his fence after removing up t
o three carefully-chosen cows from his herd.
Sample Input
6
1 1
7 8
10 9
8 12
4 100
50 7
1 1
7 8
10 9
8 12
4 100
50 7
Sample Output
12
HINT
Source
Silver鸣谢frank_c1提供翻译
【题解】【dfs】
【大模拟,dfs暴力枚举,从四周去点,每次把一个边界的所有点都去掉。】
#include<cstdio>#include<cstring>#include<algorithm>#define ll long long#define inf 1e18using namespace std;struct node{ ll heng,line;}d[50010];int n;ll lmin,rmax,hmax,umin,ans;bool vis[50010];void dfs(int t){ll xmin,xmax,ymin,ymax;xmin=ymin=inf; xmax=ymax=-inf;for(int i=1;i<=n;++i) if(!vis[i]) xmin=min(xmin,d[i].heng),xmax=max(xmax,d[i].heng),ymin=min(ymin,d[i].line),ymax=max(ymax,d[i].line);ll sum=(xmax-xmin)*(ymax-ymin);if(!t) { if(sum<ans) ans=sum; return; }int cnt=0;for(int i=1;i<=n;++i) if(!vis[i]) if(d[i].heng==xmin) cnt++,vis[i]=1;if(cnt&&cnt<=t)dfs(t-cnt);cnt=0;for(int i=1;i<=n;++i) { if(d[i].heng==xmin) vis[i]=0; if(d[i].heng==xmax) vis[i]=1,cnt++; }if(cnt&&cnt<=t) dfs(t-cnt);cnt=0;for(int i=1;i<=n;++i) { if(d[i].heng==xmax) vis[i]=0; if(d[i].line==ymin) vis[i]=1,cnt++; }if(cnt&&cnt<=t) dfs(t-cnt);cnt=0;for(int i=1;i<=n;++i) { if(d[i].line==ymin) vis[i]=0; if(d[i].line==ymax) vis[i]=1,cnt++; }if(cnt&&cnt<=t) dfs(t-cnt);cnt=0;for(int i=1;i<=n;++i) if(d[i].line==ymax) vis[i]=0;}int main(){//freopen("reduce.in","r",stdin);//freopen("reduce.out","w",stdout);int i,j;scanf("%d",&n);lmin=umin=inf; rmax=hmax=-inf;for(i=1;i<=n;++i) { ll x,y; scanf("%lld%lld",&x,&y); d[i].heng=x; d[i].line=y;if(lmin>x) lmin=x; if(rmax<x) rmax=x; if(hmax<y) hmax=y; if(umin>y) umin=y; }ans=(rmax-lmin)*(hmax-umin);dfs(3);printf("%lld\n",ans);return 0;}
[96s跑进第一页,莫名开心啊……]
0 0
- bzoj 4581: [Usaco2016 Open]Field Reduction (dfs)
- 【bzoj 4581】[Usaco2016 Open]Field Reduction(dfs)
- [BZOJ4581][Usaco2016 Open]Field Reduction(dfs)
- [Usaco2016 Open]Field Reduction
- bzoj 4578 [Usaco2016 OPen]Splitting the Field
- bzoj 4580: [Usaco2016 Open]248 (dp)
- USACO 2016 open【Field Reduction】
- BZOJ 4580: [Usaco2016 Open]248
- bzoj 4580: [Usaco2016 Open]248
- 【USACO】2016 Open Field Reduction 减小田地
- bzoj 4586: [Usaco2016 Open]Landscaping 堆
- bzoj 4579 [Usaco2016 Open]Closing the Farm
- BZOJ 4582: [Usaco2016 Open]Diamond Collector
- bzoj 4749: [Usaco2016 Dec]Moocast dfs
- [DP || 贪心 链表] BZOJ 4576 [Usaco2016 Open]262144 & BZOJ 4580 [Usaco2016 Open]248
- bzoj 4582: [Usaco2016 Open]Diamond Collector (单调队列+线段树)
- bzoj 4579: [Usaco2016 Open]Closing the Farm (并查集+离线)
- [BZOJ4580][Usaco2016 Open]248(dp)
- Block研究
- log4j日志文件保存设置 按时间或文件大小
- 差分约束系统详解
- Android TextView Span的使用详解
- 不借助第三个变量,两值互换的方法
- 【bzoj 4581】[Usaco2016 Open]Field Reduction(dfs)
- myCat schema.xml详解
- 图片上传预览
- 设计模式学习笔记(个人思考理解)
- 射线与平面的相交检测(Ray-Plane intersection test)
- union all 与 union 区别
- 数据储存和访问—登录记住密码功能
- 缓冲输入输出流实现用户登录注册
- 最小生成树之kruskal