1013 C. Photo of The Sky
传送门
[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的更多相关文章
- CF1012A Photo of The Sky
CF1012A Photo of The Sky 有 \(n\) 个打乱的点的 \(x,\ y\) 轴坐标,现在告诉你这 \(2\times n\) 个值,问最小的矩形面积能覆盖住n个点且矩形长和宽分 ...
- CodeForces - 1013C C - Photo of The Sky 贪心
题目链接: https://vjudge.net/problem/1735276/origin 题目大意与思路: 题目的基本意思就是求一个矩形的最小面积. 这个可以用最大最小值, 将他们分为X和Y组. ...
- Codeforces 1012A Photo of The Sky
作为一个蒟蒻,\(\tt{CF}\)止步\(Div.2\;C\) 这个题主要考察思维,正解代码炒鸡短-- 以下大部分搬运自官方题解 题目大意: 给你一段长度为\(2n\)的数列,将这个数列分为两个可重 ...
- Codeforces Round 500 (Div 2) Solution
从这里开始 题目地址 瞎扯 Problem A Piles With Stones Problem B And Problem C Photo of The Sky Problem D Chemica ...
- CF-500div2-A/B/C
A. Piles With Stones time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #500 (Div. 2) BC
CodeForces 1013B And CodeForces 1013C Photo of The Sky B 可以发现只有一次与操作是有意义的,所以答案只有-1,0,1,2四种情况 #inclu ...
- CF-1013 (2019/02/09 补)
CF-1013 A. Piles With Stones 比较两个序列的和,因为只能拿走或者不拿,所以总数不能变大. B. And 答案只有 -1,0,1,2几种可能,所以对于每一种答案都暴力扫一次是 ...
- pat甲级题解(更新到1013)
1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ...
- 在 Windows 10 中启用 Windows Photo Viewer
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...
随机推荐
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- Request获取客户端IP
获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. ...
- 10LaTeX学习系列之---Latex的文档结构
目录 目录 前言 (一)对于Ctex宏包中的文档结构 1.说明 2.源代码 3.输出效果 4.技巧 (二)对于ctexart的文档结构 1.说明 2.源代码 3.输出效果 (三)对于ctexbook的 ...
- 启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法
我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的 ...
- Linux 小知识翻译 - 「TCP/IP」
上次说了「协议」相关的话题,这次专门说说「TCP/IP」协议. 这里的主题是「TCP/IP」到底是什么?但并不是要说明「TCP/IP」是什么东西,重点是「TCP/IP」究竟有什么意义,在哪里使用「TC ...
- 17秋 软件工程 团队第五次作业 Alpha Scrum9
17秋 软件工程 团队第五次作业 Alpha Scrum9 今日完成的任务 世强:APP后端部门申请状态: 港晨:主页面代码实现: 树民:完善超级管理员web后端: 伟航:设置页面和侧边栏的原型: 陈 ...
- 寒假集训——搜索 B - Sudoku
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream&g ...
- IOS HTML5页面中数字自动变蓝并识别为手机号
开发HTML5的项目时发现页面元素为一串数字时,IOS手机会默认显示成蓝色字体,并且添加下划线,点击数字时会提示是否识别为手机号. 解决此问题的方法很简单,在head标签中添加下面的meta标记即可解 ...
- 转://oracle字符集
一.oracle字符集基础知识oracle数据库有国家字符集(national character set)与数据库字符集(database character set)之分.两者都是在创建数据库时需 ...
- JSON数据解析(自写)
自写的JSON解析数据 void setup() { Serial.begin(115200); char chArray[50] = "some characters"; Str ...