• HDU 3775 Chain Code pick定理


    pick定理:一个计算点阵中顶点在格点上的多边形面积公式:S=a+b÷2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积。

    思路:http://blog.csdn.net/magicnumber/article/details/6192242

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <algorithm>
    #define LL long long int
    
    using namespace std;
    
    const int MAXN = 1000100;
    const LL dx[] = { 0, -1, -1, -1,  0,  1, 1, 1 };
    const LL dy[] = { 1,  1,  0, -1, -1, -1, 0, 1 };
    
    struct Point
    {
        LL x, y;
        Point( LL x = 0, LL y = 0 ):x(x), y(y) { }
    };
    typedef Point Vector;
    
    Vector operator+( Vector A, Vector B )       //向量加
    {
        return Vector( A.x + B.x, A.y + B.y );
    }
    
    Vector operator-( Vector A, Vector B )       //向量减
    {
        return Vector( A.x - B.x, A.y - B.y );
    }
    
    Vector operator*( Vector A, double p )      //向量数乘
    {
        return Vector( A.x * p, A.y * p );
    }
    
    Vector operator/( Vector A, double p )      //向量数除
    {
        return Vector( A.x / p, A.y / p );
    }
    
    char str[MAXN];
    Point P[MAXN];
    
    LL Cross( Vector A, Vector B )   //向量叉积
    {
        return A.x * B.y - A.y * B.x;
    }
    
    LL PolygonArea( Point *p, int n )   //多边形有向面积
    {
        LL area = 0;
        for ( int i = 1; i < n - 1; ++i )
            area += Cross( p[i] - p[0], p[i + 1] - p[0] );
        return area;
    }
    
    int main()
    {
        while ( scanf( "%s", str ) == 1 )
        {
            int n = strlen(str);
            Point st = Point(0, 0);
            for ( int i = 0; i < n; ++i )
            {
                st.x += dx[ str[i] - '0' ];
                st.y += dy[ str[i] - '0' ];
                P[i] = st;
            }
    
            LL s = PolygonArea( P, n );
            if ( s < 0 ) s = -s;
    
            printf("%I64d
    ", (s + n) / 2 + 1 );
        }
        return 0;
    }
  • 相关阅读:
    第二阶段--个人冲刺--第七天
    学习进度条12
    第二阶段--个人冲刺--第六天
    第二阶段--个人冲刺--第五天
    第二阶段--个人冲刺--第四天
    第二阶段--个人冲刺--第三天
    从小工到专家阅读笔记03
    团队冲刺第一阶段第十天
    团队冲刺第一阶段第九天
    构建之法阅读笔记05
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/3254707.html
Copyright © 2020-2023  润新知