POJ 1654 Area

计算多边形面积的通式

/*
不规则多边形的计算 通过容斥三角形得到答案
*/
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int N=1e6+50;
char s[N];
int main()
{
    int T,n;scanf("%d",&T);while(T--)
    {
        scanf("%s",s+1); n=strlen(s+1);
        ll x=0,y=0,xx=0,yy=0,ans=0;
        for(int i=1;i<=n;i++)
        {
            if(s[i]==‘1‘) --x,--y;
            else if(s[i]==‘2‘) --x;
            else if(s[i]==‘3‘) --x,++y;
            else if(s[i]==‘4‘) --y;
            else if(s[i]==‘5‘) break;
            else if(s[i]==‘6‘) ++y;
            else if(s[i]==‘7‘) ++x,--y;
            else if(s[i]==‘8‘) ++x;
            else if(s[i]==‘9‘) ++x,++y;
            ans+=(x*yy-y*xx);
            xx=x,yy=y;
        }
        if(ans<0) ans=-ans; printf("%lld",ans/2);
        if(ans%2) printf(".5"); printf("\n");

    }
    return 0;
}

原文地址:https://www.cnblogs.com/lxy8584099/p/10420771.html

时间: 2024-11-05 12:30:55

POJ 1654 Area的相关文章

poj 1654 Area (多边形求面积)

链接:http://poj.org/problem?id=1654 Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14952   Accepted: 4189 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orth

POJ 1654 Area [多边形面积]

Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19642   Accepted: 5376 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From thi

poj 1654 Area(多边形面积)

Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17456   Accepted: 4847 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From thi

poj 1654 Area(求多边形面积 &amp;&amp; 处理误差)

Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16894   Accepted: 4698 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From thi

POJ 1654 Area 计算几何

#include<stdio.h> #include<string.h> #include<iostream> #include<math.h> using namespace std; int dx[10]={0,1,1,1,0,0,0,-1,-1,-1}; int dy[10]={0,-1,0,1,-1,0,1,-1,0,1}; char s[1000010]; __int64 area,x,y,px,py; int main() { int sum,t

poj 1654 Area(求多边形面积)

题意:从原点出发向八个方向走,所给数字串每个数字代表一个方向,终点与原点连线,求所得多边形面积: 思路:(性质)共起点的两向量叉积的一半为两向量围成三角形的面积.以此计算每条边首尾两个向量的叉积,求和,除二: #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const dou

POJ 1654 Area 多边形面积 G++会WA

#include<stdio.h> #include<algorithm> #include <cstring> using namespace std; typedef long long ll; const int MAXN = 1000008; char s[MAXN]; int dx[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1}; int dy[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1}; int main()

poj 1265 Area (Pick定理+求面积)

链接:http://poj.org/problem?id=1265 Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4969   Accepted: 2231 Description Being well known for its highly innovative products, Merck would definitely be a good target for industrial espionag

POJ 1265 Area

Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4713   Accepted: 2129 Description Being well known for its highly innovative products, Merck would definitely be a good target for industrial espionage. To protect its brand-new resear