标签: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); }
如有疑问,欢迎评论指出!
CodeForces - 1013C C - Photo of The Sky 贪心
标签:stream 代码 sort print const lld closed 最大值 pre
原文地址:https://www.cnblogs.com/mpeter/p/10300031.html