POJ 1654 乱搞题?

来源:互联网 发布:国信金太阳交易软件 编辑:程序博客网 时间:2024/06/07 05:13

题意:
从一个点出发,8个方向,给出每一步的方向,求出走过的路径形成的多边形的面积。
思路:
先普及一下向量叉乘、、
这里写图片描述
(摘自度娘)
也就是x1y2-x2y1。
那这不就好说了嘛。
一个经过原点的闭合多边形的面积可以分割成多个三角形。
每个三角形的面积就是相邻向量叉乘的一半。
大功告成~
注意精度问题。。。

// by SiriusRen#include <cstdio>#include <cstring>using namespace std;char a[1000005],xx[]={0,-1,0,1,-1,0,1,-1,0,1};char yy[]={0,-1,-1,-1,0,0,0,1,1,1};long long x,y,tempx,tempy,n,ans,cases;int main(){    scanf("%lld",&cases);    while(cases--){        scanf("%s",a);        n=strlen(a);ans=x=y=0;        for(int i=0;i<n;i++){            tempx=x;tempy=y;            x+=xx[a[i]-'0'];            y+=yy[a[i]-'0'];            ans+=tempx*y-x*tempy;            if(a[i]=='5')break;        }        ans=ans>0?ans:-ans;        printf("%lld",ans/2);        if(ans&1)puts(".5");        else puts("");    }}
0 0
原创粉丝点击