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

Posted mpeter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces - 1013C C - Photo of The Sky 贪心相关的知识,希望对你有一定的参考价值。

题目链接:

https://vjudge.net/problem/1735276/origin

题目大意与思路:

题目的基本意思就是求一个矩形的最小面积。

这个可以用最大最小值, 将他们分为X和Y组。但是最大最小值有一个特殊情况,就是最大值和最小值在同一个组里,比如都在X组里

然后排序

这种情况我们可以确定一条边是x = a[2*n]-a[1]则需要我们用一个tm

现在只需要我们用这一条边乘上连续n进行比较,取最小值

下面是AC代码:

技术分享图片
#include <iostream>
#include <cstdio>
#include <algorithm>
#define ll long long

using namespace std;
const int MX = 2e5+10;
ll a[MX];

int main()
{
    ll ans = 0;
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= 2*n; ++i) scanf("%lld", &a[i]);
    sort(a+1, a+2*n+1);
    ans = (a[2*n]-a[n+1])*(a[n]-a[1]); //若最大最小值分别在x和y上
    ll tmp = 0;
    for(int i = 2; i <= n; ++i)
    {
        tmp = a[n+i-1] - a[i]; // 若最大最小值都在x或y上,从2开始找连续n的边与已知乘法运算
        ans = min(ans, tmp*(a[2*n]-a[1]));
    }
    printf("%lld
", ans);
}
View Code

如有疑问,欢迎评论指出!

以上是关于CodeForces - 1013C C - Photo of The Sky 贪心的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 385 c

Codeforces 626C. Block Towers

Codeforces Round #808 (Div. 1)(A~C)

[2016-03-08][codeforces][651][C][Watchmen]

c_cpp CodeForces C ++模板

codeforces-1080C