zoukankan      html  css  js  c++  java
  • POJ 1654 乱搞题?

    题意:
    从一个点出发,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("");
        }
    }
  • 相关阅读:
    HDU 1813 Escape from Tetris
    BZOJ 2276 Temperature
    BZOJ 4499 线性函数
    BZOJ 3131 淘金
    HDU 5738 Eureka
    POJ 2409 Let it Bead
    POJ 1286 Necklace of Beads
    POJ 1696 Space Ant
    Fox And Jumping
    Recover the String
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532415.html
Copyright © 2011-2022 走看看