用graham_scan 求出凸點,再用叉積求面積,乙個三角形的面積等於叉積的一半。
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include
#define int long long
using
namespace std;
typedef pair<
int,
int> pii;
typedef
long
long ll;
const
int inf =
0x3f3f3f3f
;const
double eps =
1e-5
;const
int mod =
2013
;const
int n =
1e5+10;
int n;
struct pointpoint[n]
;// 叉積 求 ab x ac -> >0 c在 b 左
intcross
(point a,point b,point c)
#define c(x) ((x)*(x))
intdis
(point a,point b)
bool
cmp(point a,point b)
//進行處理,用棧來存元素,當有有拐趨勢,則出棧。
int stk[n]
,top =-1
;void
graham_scan()
}signed
main()
}if(n <3)
sort
(point+
1,point+n,cmp)
;int cnt =2;
for(
int i=
2;i(cross
(point[0]
,point[i-1]
,point[i])!=
0) point[cnt++
]= point[i]
; n = cnt;
graham_scan()
;double res =0;
for(
int i=
2;i<=top;i++
) res +
=cross
(point[0]
,point[stk[i-1]
],point[stk[i]])
; cout
)<<
(res/2)
<}return0;
}
swust oj 249 凸包面積
凸包面積 1000 ms 65535 kb 1078 3483 tags 分治法 麥兜是個淘氣的孩子。一天,他在玩鋼筆的時候把墨水灑在了白色的牆上。再過一會,麥兜媽就要回來了,麥兜為了不讓媽媽知道這件事情,就想用乙個白色的凸多邊形把牆上的墨點蓋住。你能告訴麥兜最小需要面積多大的凸多邊形才能把這些墨點...
swustoj凸包面積(分治法)
麥兜是個淘氣的孩子。一天,他在玩鋼筆的時候把墨水灑在了白色的牆上。再過一會,麥兜媽就要回來了,麥兜為了不讓媽媽知道這件事情,就想用乙個白色的凸多邊形把牆上的墨點蓋住。你能告訴麥兜最小需要面積多大的凸多邊形才能把這些墨點蓋住嗎?現在,給出了這些墨點的座標,請幫助麥兜計算出覆蓋這些墨點的最小凸多邊形的面...
swust oj凸包面積 0249 分治法
本文目錄 oj題目 分治法思路 具體過程 tips 測試資料 這道題本身不是很難喲,不要被嚇到,然後就可以開始做了o o 題目 分治法思路 見 先預排序,預排序後最左和最右的點肯定是凸包中的點。然後可以遞迴的從內向外擴充套件凸包,在當前直線的2側尋找最高點,最高點肯定在凸包中,這裡涉及到一些數學知識...