zoukankan      html  css  js  c++  java
  • poj3907 Build Your Home

    Build Your Home
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 1121   Accepted: 621

    Description

    Mr. Tenant is going to buy a new house. In fact, he is going to buy a piece of land and build his new house on it. In order to decide which piece of land to buy, Mr. Tenant needs a program which will give a score to each piece. Each candidate piece of land is a polygonal shape (not necessarily convex), and Mr. Tenant wonders what the best score is. Among possible scores, he considered the number of vertices, sum of angles, minimum number of required guards, and so forth. Finally, Mr. Tenant decided that the best score for a piece of land would simply be its area. Your task is to write the desired scoring program.

    Input

    The input file consists of multiple pieces of land. Each piece is a simple polygon (that is, a polygon which does not intersect itself). A polygon description starts with a positive integer number k, followed by k vertices, where each vertex consists of two coordinates (floating-point numbers): x and y. Naturally, the last vertex is connected by an edge to the first vertex. Note that each polygon can be ordered either clockwise or counterclockwise. The input ends with a “0” (the number zero).

    Output

    For each piece of land, the output should consist of exactly one line containing the score of that piece, rounded to the nearest integer number. (Halves should be rounded up, but Mr. Tenant never faced such cases.)

    Sample Input

    1   123.45 67.890 
    3   0.001 0   1.999 0   0 2 
    5   10 10   10 12   11 11   12 12   12.0 10.0 
    0

    Sample Output

    0
    2
    3

    Hint

    The scoring program has to handle well degenerate cases, such as, polygons with only one or two vertices.

    Source

    题目大意:求一个多边形的面积
    分析:利用叉积,需要注意的是最后要取fabs,处以2并且四舍五入!
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    struct node
    {
        double x,y;
    }e[100010];
    
    int n;
    double ans;
    
    double det(node a,node b)
    {
        return a.x * b.y - a.y * b.x;
    }
    
    int main()
    {
        while (scanf("%d",&n) != EOF && n)
        {
            for (int i = 1; i <= n; i++)
                scanf("%lf%lf",&e[i].x,&e[i].y);
            e[n + 1] = e[1];
            ans = 0.0;
            for (int i = 1; i <= n; i++)
                ans += det(e[i],e[i + 1]);
            printf("%d
    ",(int)(fabs(ans) / 2 + 0.5));
        }
    
        return 0;
    }
  • 相关阅读:
    教你玩转CSS的所有字体,路过的来瞧一瞧。
    CSS基本语法?
    怎么样才能玩转前端所有的CSS背景相关问题?
    如何玩转CSS内部样式表与外部样式表?
    什么是CSS?你真的理解了吗?
    CSS页面demo
    HTML教程(看完这篇就够了)
    HTML5新增的主体结构元素
    Math
    练习点菜及用的公式
  • 原文地址:https://www.cnblogs.com/zbtrs/p/8097678.html
Copyright © 2011-2022 走看看