Problem

AtCoder

Solution

把点映射至二维平面,问题就变成了给定 \(n\) 个点,可以把点对 \(y=x\) 对称,求覆盖所有点的最小矩形面积。

可以先把所有点放到 \(y=x\) 下方,那么我们每次只需要贪心地把矩形左/右边界上的点对称过去即可,用multiset维护一下。

正确性在于如果把矩形内部的点对称过去,肯定不会使得当前矩形的面积变小。

时间复杂度 \(O(n\log n)\)。

Code

#include <algorithm>
#include <cstdio>
#include <set>
using namespace std;
typedef long long ll;
const int maxn=200010,INF=0x3f3f3f3f;
template <typename Tp> inline int getmin(Tp &x,Tp y){return y<x?x=y,1:0;}
template <typename Tp> inline int getmax(Tp &x,Tp y){return y>x?x=y,1:0;}
template <typename Tp> inline void read(Tp &x)
{
x=0;int f=0;char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') f=1,ch=getchar();
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
if(f) x=-x;
}
struct data{
int x,y;
bool operator < (const data &b)const{return x<b.x;}
}a[maxn];
int n,mx,mn,bmn=INF;
ll ans=1e18;
multiset<int> A,B;
int main()
{
read(n);
for(int i=1;i<=n;i++)
{
read(a[i].x);read(a[i].y);
if(a[i].x>a[i].y) swap(a[i].x,a[i].y);
getmax(mx,a[i].y);getmin(bmn,a[i].y);
A.insert(a[i].x);B.insert(a[i].y);
}
sort(a+1,a+n+1);
mn=a[1].x;
for(int i=1;i<=n;i++)
{
A.erase(A.find(a[i].x));
B.insert(a[i].x);
B.erase(B.find(a[i].y));
A.insert(a[i].y);
getmin(ans,(ll)(*A.rbegin()-*A.begin())*(*B.rbegin()-*B.begin()));
}
printf("%lld\n",ans);
return 0;
}

最新文章

  1. Java多线程基础——对象及变量并发访问
  2. 实现下来ScrollView放大轮播图
  3. sql单表中某一字段重复,取最近3条或几条数据
  4. sessionStorage &amp; localStorage &amp; cookie
  5. Redis学习笔记七:独立功能之排序
  6. [poj3378] Crazy Thairs (DP + 树状数组维护 + 高精度)
  7. iOS开发---集成百度地图,位置偏移问题
  8. 用批处理文件来手动启动和停止Oracle服务
  9. 核反应堆[HDU2085]
  10. 【一段日子荟萃】where should I go.
  11. JS 日期格式转换
  12. NYOJ-104最大和
  13. openGL线s的绘制
  14. 生成 Qt 文档
  15. 《JavaScript面向对象编程指南(第2版)》读书笔记(一)
  16. js 几种排序方法
  17. Ajax——从服务器获取各种文件
  18. VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written” ,错误解决
  19. hadoop from rookie to ninja - 1. Basic Architecture(基础架构)
  20. Bullet物理引擎的安装与使用

热门文章

  1. java递归方法求数组最大元素
  2. VDOM configuration
  3. 学习Spring Boot:(三)配置文件
  4. 解题:USACO10MAR Great Cow Gather
  5. bzoj 1539: [POI2005]Dwu-Double-row
  6. SpringCloud微服务实战-Zuul-APIGateway(十)
  7. python文件加入python环境变量
  8. 队列,event,multiprocess
  9. NATS_02:NATS消息通信模型
  10. Java基础-数组常见排序方式