團體天梯賽-L3-021 神壇
阿新 • • 發佈:2018-12-24
一開始用暴力求解只能通過前三個點,改了一下,用三角形萬能公式,然後對點進行極角大小的排序。只要求點與相鄰兩點組成的三角形面積就好惹~(最好不要用cin和cout。。會超時)
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; const int N=50010; int n; struct node{ long long x,y; }p[N],temp[N]; bool cmp(node a,node b) { return b.y*a.x>a.y*b.x; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lld %lld",&p[i].x,&p[i].y); } double ans=pow(10,18)/2; for(int i=1;i<=n;i++) { int t=1; for(int j=1;j<=n;j++) { if(i==j) continue; temp[t].x=p[j].x-p[i].x; temp[t].y=p[j].y-p[i].y; t++; } sort(temp+1,temp+t,cmp); for(int j=1;j<t-1;j++){ ans=min(ans,(temp[j].x*temp[j+1].y-temp[j+1].x*temp[j].y)*0.5); } } printf("%.3f",ans); return 0; }