传送门

[http://codeforces.com/contest/1013/problem/C]

题意

输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来的最小矩形面积。

思路

先对2n 个数小到大排序,因为矩形是要求把这n个点框住的,所以稍微想一下不难得到:S=(max(x)−min(x))∗(max(y)−min(y))

于是我们将原问题这样转化:

给你2n个数,把这2n个数放在两个集合当中,每个集合的元素个数为n,设这两个集合分别为X,Y,

求min((Xmax−Xmin)∗(Ymax−Ymin))

接下来我们来讨论,如何分放集合。

考虑如果最大数a2n与最小数a1如果在同一个集合X,那么现在我们要求min(Ymax−Ymin)。

考虑一下怎样的情况才会有min(Ymax−Ymin)的情况出现。假设Ymin在a中为ai,那么Ymax在a中一定为ai+n−1,为什么呢?

如果Ymax在ai+1−>ai+n−2之间,那么Y集合里面的元素个数就没有要求的n个了,不满足。

如果Ymax在ai+n−>a2n−1之间,那么显然可以在满足元素个数为n的情况下使Ymax最小。

所以在最大数a2n与最小数a1如果在同一个集合X时,答案的值为:

Ans=min(a[2n]−a[1])∗(a[i+n−1]−a[i])2≤i≤n

那么还有一种情况就是最大数a2n与最小数a1不在同一个集合当中,与上面类似的讨论不难得到最后的结果唯一:

Ans=(a[2n]−a[n+1])∗(a[n]−a[1])

所以我们最后的结果在上面两者之间取最小即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=200010;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
int n,i;
ll a[maxn];
while(cin>>n){
memset(a,0,sizeof(a));
for(i=1;i<=2*n;i++)
cin>>a[i];
sort(a+1,a+2*n+1);
ll ans=(a[2*n]-a[n+1])*(a[n]-a[1]);
for(i=2;i<=n;i++)
ans=min(ans,(a[2*n]-a[1])*(a[n+i-1]-a[i]));
cout<<ans<<endl;
}
return 0;
}

1013 C. Photo of The Sky的更多相关文章

  1. CF1012A Photo of The Sky

    CF1012A Photo of The Sky 有 \(n\) 个打乱的点的 \(x,\ y\) 轴坐标,现在告诉你这 \(2\times n\) 个值,问最小的矩形面积能覆盖住n个点且矩形长和宽分 ...

  2. CodeForces - 1013C C - Photo of The Sky 贪心

    题目链接: https://vjudge.net/problem/1735276/origin 题目大意与思路: 题目的基本意思就是求一个矩形的最小面积. 这个可以用最大最小值, 将他们分为X和Y组. ...

  3. Codeforces 1012A Photo of The Sky

    作为一个蒟蒻,\(\tt{CF}\)止步\(Div.2\;C\) 这个题主要考察思维,正解代码炒鸡短-- 以下大部分搬运自官方题解 题目大意: 给你一段长度为\(2n\)的数列,将这个数列分为两个可重 ...

  4. Codeforces Round 500 (Div 2) Solution

    从这里开始 题目地址 瞎扯 Problem A Piles With Stones Problem B And Problem C Photo of The Sky Problem D Chemica ...

  5. CF-500div2-A/B/C

    A. Piles With Stones time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. Codeforces Round #500 (Div. 2) BC

    CodeForces 1013B And CodeForces 1013C  Photo of The Sky B 可以发现只有一次与操作是有意义的,所以答案只有-1,0,1,2四种情况 #inclu ...

  7. CF-1013 (2019/02/09 补)

    CF-1013 A. Piles With Stones 比较两个序列的和,因为只能拿走或者不拿,所以总数不能变大. B. And 答案只有 -1,0,1,2几种可能,所以对于每一种答案都暴力扫一次是 ...

  8. pat甲级题解(更新到1013)

    1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ...

  9. 在 Windows 10 中启用 Windows Photo Viewer

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...

随机推荐

  1. ApplicationContext中Bean的生命周期

    引言 Bean应用上下文中的生命周期和在BeanFactory中生命周期类似,不同的是,如果Bean实现了org.springframework.context.ApplicationContextA ...

  2. MongoDB逻辑操作符$or, $and,$not,$nor

    $or是一个逻辑or操作符操作在一个数据或者多个表达式并且需要选择至少一个满足条件的表达式,$or有至少以下表达式: { $or: [ { <expression1> }, { <e ...

  3. 剑指offer.在O(1)时间内删除链表节点

    给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点.假设链表一定存在,并且该节点一定不是尾节点. 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节 ...

  4. CSS3之多列布局columns详解

    CSS3之多列布局columns详解 CSS3提供了个新属性columns用于多列布局.基本属性如下: 1. columns: <'column-width'> || <'colum ...

  5. STL语法——集合:set 安迪的第一个字典(Andy's First Dictionary,UVa 10815)

    Description Andy, , has a dream - he wants to produce his very own dictionary. This is not an easy t ...

  6. HiKey软硬件开发环境及其调试

    HiKey是一款搭载华为海思麒麟620芯片,符合Linaro 96Boards标准的SBC开发板.它采用8核64位Cortex-A53处理器,主频高达1.2GHz. HiKey作为AOSP支持的一款产 ...

  7. Android popupMenu

    popupMenu = new PopupMenu(ActivityHousesNumList.this, imageViewhousesnum1); popupMenu.getMenuInflate ...

  8. 8-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给C#TCP客户端显示)

    http://www.cnblogs.com/yangfengwu/p/8785516.html 先写单片机端的程序 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s ...

  9. 使用Webuploader大文件分片传输

    背景:50G大文件的HTTP上传至服务器. 好了,根据这个命题,可以开始研究我们怎么做才能把这么大的文件上传成功. 分片上传是肯定的,断点续传也是要有的,进度可视化那就更好了,基于这些,我选择了Web ...

  10. linux驱动编写之进程独占驱动

    一.描述 嵌入式开发系统中,有各种硬件资源,而有些硬件资源使用时候是需要进程独占的.也就是说,同一时刻只有一个进程允许使用这个硬件资源,其他的进程只能放弃执行或者挂起等待.在设计其对应驱动的时候,就需 ...