POJ 1654 Area 计算几何

时间:2024-01-06 08:40:56
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std;
int dx[]={,,,,,,,-,-,-};
int dy[]={,-,,,-,,,-,,};
char s[];
__int64 area,x,y,px,py;
int main()
{
int sum,t,tmp,i;
cin>>tmp;
while(tmp--)
{
scanf("%s",s);
t=strlen(s);
if(t<)
{
printf("0\n");
}
else
{
area=;
x=y=;
for(i=;i<t-;i++)
{
px=x+dx[s[i]-''];
py=y+dy[s[i]-''];
area+=(px*y-x*py);
x=px;
y=py;
}
area=fabs(area);
if(area%==)
cout<<area/<<endl;
else
cout<<area/<<".5"<<endl;
}
}
return ;
}

计算几何,让原点和相邻的两个点的坐标进行叉乘,然后累加起来/2就是面积

由于数据的特殊性质,所有最后%2来判断是否有小数点