1. 程式人生 > >CodeForces - 1013C C - Photo of The Sky 貪心

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

-a src codeforce 面積 最大值和最小值 printf 需要 eve 矩形

題目鏈接:

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 貪心