358.50
思路:把多边形分成多个三角形,用叉乘公式求每个三角形的面积就行了
记住面积一定是正的,这题不知道为什么用数组存储就是不会过,换为结构体存储才会过。why?
AC代码:
#include<cstdio> #include<cmath> #define MAXN 55000 #define fab(a) (a)>0?(a):(-a) struct s { double x,y; }a[MAXN]; int main() { int n,i; while(~scanf("%d",&n)) { double sum=0; for(i=0;i<n;i++) scanf("%lf%lf",&a[i].x,&a[i].y); for(i=0;i<n-1;i++) sum+=(a[i].x*a[i+1].y-a[i+1].x*a[i].y); sum+=(a[n-1].x*a[0].y-a[0].x*a[n-1].y); sum/=2; printf("%.2lf\n",fab(sum)); } return 0; }