码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-01-21 19:10:13      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:stream   代码   sort   print   const   lld   closed   最大值   pre   

题目链接:

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\n", ans);
}
View Code

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

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

标签:stream   代码   sort   print   const   lld   closed   最大值   pre   

原文地址:https://www.cnblogs.com/mpeter/p/10300031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!