在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000
。
長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決這個難題。
輸入在第一行給出乙個正整數 n(3 ≤ n ≤ 5000)。隨後 n 行,每行有兩個整數,分別表示神石的橫座標、縱座標(− 橫座標、縱座標
在一行中輸出神壇的最小面積,四捨五入保留 3 位小數。
8
3 42 4
1 14 1
0 33 0
1 34 2
0.500
輸出的數值等於圖中紅色或紫色框線的三角形的面積。
第一次接觸計算幾何的題目
先算出兩兩邊的向量 再把向量按照極角來排序 然後用叉乘法一一求面積 更新最小值
#includeusingview codenamespace
std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);i--)
#define ri(n) scanf("%d",&(n))
#define rii(n,m) scanf("%d%d",&n,&m)
#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define rs(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define fi first
#define rep(i,n) for(int i=0;i
#define clr(a,v) memset(a,v,sizeof a)
/////////////////////////////////
//#define inf 0x3f3f3f3f
#define n 50010
intn;
struct
nodep[n],temp[n];
bool
cmp(node a,node b)
intmain()
double ans=pow(10,18)/2
;
for(int i=1;i<=n;i++)
sort(temp+1,temp+t,cmp);
for(int j=1;j1;j++)
}printf(
"%.3f
",ans);
return0;
}
L3 021 神壇 計算幾何
l3 021 神壇 30 分 在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000。長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決...
L3 021 神壇 極角排序
l3 021 神壇 30 分 在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000。長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決...
團體程式設計天梯賽 L3 021 神壇(極角排序)
思路 1.一共n個點,對於每乙個點我們都可以將它作為頂點,那麼此點和其它n 1個點就會組成n 1個向量 2.n 1個向量中,我們任意選取兩個向量都可以滿足 選取三塊石頭 這個條件,但是我們現在的目標是面積最小,因此我們需要對這n 1個向量進行極角排序 證明請參考 3.a b c a,b,c a,b,...