P3145 [USACO16OPEN]分割田地Splitting the Field

题目描述

Farmer John's NN cows (3 \leq N \leq 50,0003≤N≤50,000) are all located at distinct positions in his two-dimensional field. FJ wants to enclose all of the cows with a rectangular fence whose sides are parallel to the x and y axes, and hewants this fence to be as small as possible so that it contains every cow (cowson the boundary are allowed).

FJ is unfortunately on a tight budget due to low milk production last quarter.He would therefore like to enclose a smaller area to reduce maintenance costs,and the only way he can see to do this is by building two enclosures instead of one. Please help him compute how much less area he needs to enclose, in total,by using two enclosures instead of one. Like the original enclosure, the two enclosures must collectively contain all the cows (with cows on boundaries allowed), and they must have sides parallel to the x and y axes. The two enclosures are not allowed to overlap -- not even on their boundaries. Note that enclosures of zero area are legal, for example if an enclosure has zero width and/or zero height.在一个二维的牧场中,Farmer John的N(3<=N<=50000)头牛都各占一席。他想用边平行于x轴和y轴的矩形围栏围住所有牛,并且要让围栏尽可能小(牛可以在边界线上)。

不幸地,由于Farmer John的奶牛产量惨淡,导致最后一个季度预算紧张。因此,他希望封闭一个较小的地区来减少维修的费用,他能看到的唯一方法就是修建两个围栏而不是建一个。请编程告诉他用两个围栏比用一个围栏总共能够节省多少需要围住的面积。同样地,用两个围栏的时候必须围住所有的牛(牛同样可以在边界上),边也要平行于x轴和y轴。两个围栏不允许重叠(边界也不能)。注意面积为零是合法的,例如一个围栏有着长度为零的宽或长度为零的长(一条线)。

输入输出格式

输入格式:

The first line of input contains NN. The next NN lines each contain two

integers specifying the location of a cow. Cow locations are positive integers

in the range 1 \ldots 1,000,000,0001…1,000,000,000.

输出格式:

Write a single integer specifying amount of total area FJ can save by using two

enclosures instead of one.

输入输出样例

输入样例#1: 复制

6
4 2
8 10
1 1
9 12
14 7
2 3
输出样例#1: 复制

107
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 50010
#define INF 0x7fffffff
int l[maxn],r[maxn],l1[maxn],r1[maxn],n;
long long ans;
struct node{
int x,y;
bool operator < (const node a)const{
if(x==a.x)return y<a.y;
return x<a.x;
}
}p[maxn];
void work(){
memset(l,,sizeof(l));
memset(r,-,sizeof(r));
memset(l1,,sizeof(l1));
memset(r1,-,sizeof(r1));
sort(p+,p+n+);
for(int i=;i<=n;i++){
l[i]=min(l[i-],p[i].y);
r[i]=max(r[i-],p[i].y);
}
for(int i=n;i>=;i--){
l1[i]=min(l1[i+],p[i].y);
r1[i]=max(r1[i+],p[i].y);
}
for(int i=;i<=n;i++){
long long tem=1LL*(r[i-]-l[i-])*(p[i-].x-p[].x)+1LL*(r1[i]-l1[i])*(p[n].x-p[i].x);
ans=min(tem,ans);
}
}
int main(){
int mnx=INF,mny=INF,mxx=-INF,mxy=-INF;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&p[i].x,&p[i].y);
mnx=min(mnx,p[i].x);mny=min(mny,p[i].y);
mxx=max(mxx,p[i].x);mxy=max(mxy,p[i].y);
}
ans=1LL*(mxx-mnx)*(mxy-mny);
long long ans1=ans;
work();
for(int i=;i<=n;i++)swap(p[i].x,p[i].y);
work();
cout<<ans1-ans;
return ;
}

洛谷P3145 [USACO16OPEN]分割田地Splitting the Field的更多相关文章

  1. 洛谷P1436 棋盘分割

    洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...

  2. 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 解题报告

    P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...

  3. 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解

    P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...

  4. 洛谷 P1436 棋盘分割 解题报告

    P1436 棋盘分割 题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共 ...

  5. 洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver

    题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...

  6. 洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver

    传送门 题目大意: n个谷仓 ,每次关闭一个谷仓,问剩下没被关闭的谷仓是 否联通. 题解:并查集+倒序处理 代码: #include<iostream> #include<cstdi ...

  7. 【前缀和】【two-pointer】【贪心】洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解

        解法众多的一道毒瘤题? 题目描述 奶牛Bessie很喜欢闪亮亮的东西(Baling~Baling~),所以她喜欢在她的空余时间开采钻石!她现在已经收集了\(N\)颗不同大小的钻石,现在她想在谷 ...

  8. 洛谷P3147 [USACO16OPEN]262144

    P3147 [USACO16OPEN]262144 题目描述 Bessie likes downloading games to play on her cell phone, even though ...

  9. 洛谷P3146 [USACO16OPEN]248

    P3146 [USACO16OPEN]248 题目描述 Bessie likes downloading games to play on her cell phone, even though sh ...

随机推荐

  1. python 链接sharepoint 2013 REST api

    import requests,simplejson from requests_ntlm import HttpNtlmAuth p1 = requests.get("http://you ...

  2. Java 对象引用以及对象赋值

    一.Vehicle veh1 = new Vehicle(); 通常这条语句执行的动作被称为创建一个对象,其实他包含了四个动作. 1.new Vehicle  :表示在堆空间内创建了一个Vehicle ...

  3. bzoj 4771: 七彩树 树链的并+可持久化线段树

    题目大意: 给定一颗树,询问树中某个点x的子树中与其距离不超过d的所有点中本质不同的颜色数 强制在线 题解: 一下午终于把这道题叉掉了. 写了三个算法,前两个都是错的,后一个是%的网上大爷们的题解. ...

  4. poj 1637 Sightseeing tour —— 最大流+欧拉回路

    题目:http://poj.org/problem?id=1637 建图很妙: 先给无向边随便定向,这样会有一些点的入度不等于出度: 如果入度和出度的差值不是偶数,也就是说这个点的总度数是奇数,那么一 ...

  5. Asp.net工作流workflow实战之书签(二)

    1.winform(web程序)下使用工作流 怎样才能像控制台那样让winform或web页面窗体阻塞等待工作流的继续执行呢 2.BookMark书签 书签:和一般的书签看书的时候方便查看上次看的内容 ...

  6. C++输入输出知识

    1.strtok将字符串中的单词用' '分割出来 #include<iostream> #include<cstdio> #include<cstdlib> #in ...

  7. css基础知识二

    1.盒模型: 实际宽度:外边距*2+内边距*2+边框*2+内容宽度(注意这点,可解决界面元素轻微浮动问题,如hover有边框,以前没的时候会有轻微浮动) 作用:他规定了网页元素如何显示以及其相互关系 ...

  8. JavaScript-Tool:template

    ylbtech-JavaScript-Tool: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http:/ ...

  9. 51单片机的TXD、 RXD 既接了 232 又接了 485芯片 ,会导致通信失败!

    51单片机的TXD. RXD 既接了 232 又接了 485 ,会导致通信失败! 下面是绘制电路板用的部分电路图: 通信现象: 1.我使用了USB-232的下载模块,把它接到P4上,发现单片机只能发送 ...

  10. 发一个可伸缩线程池大小的python线程池。已通过测试。

    发一个可伸缩线程池大小的线程池. 当任务不多时候,不开那么多线程,当任务多的时候开更多线程.当长时间没任务时候,将线程数量减小到一定数量. java的Threadpoolexcutor可以这样,py的 ...