Codeforces 1012A Photo of The Sky
作为一个蒟蒻,\(\tt{CF}\)止步\(Div.2\;C\)
这个题主要考察思维,正解代码炒鸡短……
以下大部分搬运自官方题解
题目大意:
给你一段长度为\(2n\)的数列,将这个数列分为两个可重集,每个集合有\(n\)个元素,使得这两个集合的极差之积最小,输出这个最小值
题解:
假设输入的数组为\(a[2n]\),为了方便,我们把要分成的两个可重集叫做\(X\)和\(Y\)
首先肯定要先\(sort\)一下,使得数组有序,方便操作(下文提到的数组都是有序的)
接下来就是分类讨论了:
第一种情况:数组a的最大值和最小值都在\(X\)里。那么\(X\)的极差就是\(a[2n]-a[1]\),接下来我们要使\(Y\)的极差尽量小,我们就需要枚举一下每个元素\(a[i]\),因为集合里要有\(n\)个元素,所以对于每个\(a[i]\),能使\(Y\)的极差最小的方式就是将\(a[i]\)~\(a[i+n-1]\)全部放到\(Y\)里,所以\(Y\)的极差就是\(\min(a[i+n-1]-a[i])\;i\in [2,n+1]\)
答案为 \(\min((a[i+n-1]-a[i])\cdot(a[2n]-a[1]))\;i\in [2,n+1]\)第二种情况:最大值和最小值分别在\(X\)和\(Y\)里。这样我们就要使\(X\)的最大值最小,\(Y\)的最大值最大,那么\(X\)的极差就为\(a[n]-a[1]\),\(Y\)的极差为\(a[2n]-a[n+1]\)
答案为 \((a[n]-a[1])\cdot (a[2n]-a[n+1])\)
最终的答案从这两种情况中取一个最小值就好了。
时间复杂度\(O(nlogn)\)(也就是排序的复杂度)
最后提醒一句:别忘了开\(\mathfrak{long\;long}\)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int read(){
int k=0; char c=getchar();
for(;c<'0'||c>'9';) c=getchar();
for(;c>='0'&&c<='9';c=getchar())
k=(k<<3)+(k<<1)+c-48;
return k;
}
ll a[100010<<1],ans;
int main(){
int n=read();
for(int i=1;i<=n<<1;i++) a[i]=read();
sort(a+1,a+(n<<1)+1);
ans=(a[n]-a[1])*(a[n<<1]-a[n+1]); //第二种情况
for(int i=2;i<=n+1;i++) //第一种情况
ans=min((a[n<<1]-a[1])*(a[i+n-1]-a[i]),ans);
cout<<ans;
return 0;
}
Codeforces 1012A 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组. ...
- 1013 C. Photo of The Sky
传送门 [http://codeforces.com/contest/1013/problem/C] 题意 输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来 ...
- Codeforces Round #500 (Div. 2) BC
CodeForces 1013B And CodeForces 1013C Photo of The Sky B 可以发现只有一次与操作是有意义的,所以答案只有-1,0,1,2四种情况 #inclu ...
- 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 ...
- CF-1013 (2019/02/09 补)
CF-1013 A. Piles With Stones 比较两个序列的和,因为只能拿走或者不拿,所以总数不能变大. B. And 答案只有 -1,0,1,2几种可能,所以对于每一种答案都暴力扫一次是 ...
- codeforces 997C.Sky Full of Stars
题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\) ...
- Codeforces 835C-Star sky
题目链接:http://codeforces.com/problemset/problem/835/C 题意:天上有很多星星,每个星星有他自己的坐标和初始亮度,然后每个星星的亮度在一秒内会加一如果大于 ...
随机推荐
- BZOJ2038【莫队算法】
THE FIRST 莫队算法. /************************************************************** Problem: 2038 User: ...
- 文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)
一.文档间的通信 postMessage对象 //不跨域 1.iframe:obj.contentWindow [iframe中的window对象] iframe拿到父级页面的window: pare ...
- VR头盔产品镜片评测
2015-07-21 16:59 原创 Randy Orton http://www.leiphone.com/news/201507/7j46BjWsSitKML13.html 虚拟现实设备自从去年 ...
- 2014-6-28 NOIP模拟赛
[今天我出的三道题目全部是图论哦,请大家轻虐] 1.魔术球问题弱化版(ball.c/.cpp/.pas) 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的 ...
- Android近场通信---NFC基础(一)(转)
转自 http://blog.csdn.net/think_soft/article/details/8169483 本文译自:http://developer.android.com/guide/t ...
- kafka剖析(转)
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spa ...
- IM 通讯录
wkt-4024 6720
- 转 PHP函数---$_Get()和$_Post()的用法
一.$_Get()和$_Post()函数是用来传值的,即对应两种提交表单的方法,get和post. 二.$_Get方法 (1)获取通过URL的传值 Example 1 新建两个PHP文件,1.php, ...
- rtos概要
一 RTOS如何调试: 静态调试帮不上忙,因为嵌入式系统都是动态系统 ,要借助基于RTOS系统的可视化分析 :Micriµm 的 µC/Probe ,SEGGER 的 SystemView ,Perc ...
- js 中对字符串的操作
1.split() split() 方法用于把一个字符串分割成字符串数组. 用法:stringObject.split(separator,howmany) separator:必选,类型为字符串或者 ...