作为一个蒟蒻,\(\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的更多相关文章

  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. 1013 C. Photo of The Sky

    传送门 [http://codeforces.com/contest/1013/problem/C] 题意 输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来 ...

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

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

  5. Codeforces Round 500 (Div 2) Solution

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

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

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

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

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

  8. codeforces 997C.Sky Full of Stars

    题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\) ...

  9. Codeforces 835C-Star sky

    题目链接:http://codeforces.com/problemset/problem/835/C 题意:天上有很多星星,每个星星有他自己的坐标和初始亮度,然后每个星星的亮度在一秒内会加一如果大于 ...

随机推荐

  1. Linux下mysql启动失败

    原因:强制重启服务器之后,发现mysql启动 失败 解决方法:强制清空 报错路径下的tmp文件,清空之后在tmp下面新建一个文件夹,文件夹的名字在你清空tmp之后启动mysql系统会给你提示 欧克,完 ...

  2. 3DMAX 1快捷键及常用操作

    开启,关闭快捷键 ,使用快捷键时要按下这个按钮 快捷键查看与修改 自定义-自定义用户界面(cutomize user interface):设置和查看快捷键 位置变换 Z: 复位---物体被移动飞了的 ...

  3. 进击python第一篇:相遇

    1.第一句Python代码 在 当前目录下创建 hello.py 文件,内容如下: print "hello,world!" 执行 hello.py 文件,即: python he ...

  4. Codevs 1961 躲避大龙

    1961 躲避大龙  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 你早上起来,慢悠悠地来到学校门口, ...

  5. MySQL · 性能优化 · MySQL常见SQL错误用法

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样 ...

  6. Java基础 使用Properties类

  7. 自定义收索View

    1 .h文件 @interface SearchNavView : UIView @property (nonatomic, copy) void(^cancleBtnBlock)(void); @p ...

  8. bzoj 5249 [2018多省省队联测] IIIDX

    bzoj 5249 [2018多省省队联测] IIIDX Link Solution 首先想到贪心,直接按照从大到小的顺序在后序遍历上一个个填 但是这样会有大问题,就是有相同的数的时候,会使答案不优 ...

  9. hdu6318( 2018 Multi-University Training Contest 2)

    bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6318 求逆序数的对数 #include<iostream> #include ...

  10. Shortest Path Codeforces - 59E || 洛谷P1811 最短路_NOI导刊2011提高(01)

    https://codeforces.com/contest/59/problem/E 原来以为不会..看了题解发现貌似自己其实是会的? 就是拆点最短路..拆成n^2个点,每个点用(i,j)表示,表示 ...