CodeForces - 1013C C - Photo of The Sky 貪心
阿新 • • 發佈:2019-01-21
-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> #defineView Codell 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 貪心