码迷,mamicode.com
首页 > 其他好文 > 详细

正边形求面积

时间:2020-11-04 18:24:55      阅读:18      评论:0      收藏:0      [点我收藏+]

标签:border   space   ota   exp   load   rate   button   php   submit   

问题 F: Icebergs

时间限制: 3 Sec  内存限制: 256 MB
提交 状态

题目描述

Tania is a marine biologist. Her goal is to measure the impact of climate change on the population of Macaroni penguins. As most species of penguins, Macaroni penguins live in the southern hemisphere, near Antarctica. Tania is primarily focused on the population of Macaroni penguins near the "?les Nuageuses" (in English, "Cloudy Islands").
During summer, the ice around the islands melt and the islands become too small to host all the birds. Some penguins live on the icebergs floating around. For her study, Tania needs to measure the area of those icebergs.

Using satellite imagery and image recognition, Tania has obtained a map of the icebergs and your goal is to measure their area. The island studied by Tania is quite small and the Earth can locally be approximated as a flat surface. Tania‘s map thus uses the usual 2D Cartesian coordinate system, and areas are computed in the usual manner. For instance, a rectangle parallel to the axes defined by the equations x1≤x≤x2 and y1≤y≤y2 has an area of (x2?x1)×(y2?y1).

In Tania‘s representation, an iceberg is a polygon represented by its boundary. For each iceberg, Tania has noted the sequence of points p1,…,pk defining the border of the iceberg. The various icebergs never touch each other and they never overlap. Furthermore, the boundary p1,…,pk of an iceberg is always a "simple" polygon, i.e. no two segments in [p1;p2],…,[pk;p1] cross each other.

输入

The input consists of the following lines:
·on the first line, an integer N, describing the number of polygons;
·then N blocks of lines follow, each describing a polygon and composed of:
  ○on the first line, an integer P, the number of points defining the polygon border,
  ○on the next P lines, two space-separated integers x and y, the coordinates of each border point.

Limits
·The number N of polygons is such that 1≤N≤1000.
·Each polygon is described by P points with 3≤P≤50.
·All coordinates are such that 0≤x,y≤106 .

输出

The output should contain a single integer: the total area rounded to the nearest integer below. In other words, the output should be a single line containing a single integer I such that the total area A of the polygons described in the input is comprised between I included and I+1 excluded (I≤A<I+1).

样例输入 Copy

【样例1】
1
4
0 0
1 0
1 1
0 1
【样例2】
2
5
98 35
79 90
21 90
2 36
50 0
3
0 0
20 0
0 20

样例输出 Copy

【样例1】
1
【样例2】
6100

提示

Sample Explanation 1
This sample has a unique iceberg, which is a square of side 1.
Sample Explanation 2
技术图片

 

 

技术图片
In this sample (depicted below) there are two icebergs, a triangle of area 200 and a pentagon of area 5900.5.
技术图片

 

 

意思就是:给你一个t,有t个正边形,问你这t个正边形的总面积

#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
const int maxn=1e5+100;
double fabs(double ans){
    if(ans<0){
        return -ans;
    }
    return ans;
} 
struct Point//点的定义
{
    double x,y;
    double operator ^(const Point &b)const//重新定义^
    {
        return x*b.y-y*b.x;
    }
}a[maxn];
double CalcArea(Point p[],int n)//计算n边形的面积
{
    double res=0;
    for(int i=0;i<n;i++)
        res += 1.0*(p[i]^p[(i+1)%n])/2;
    return fabs(res);
}
 
int main(){
    int t;
    cin>>t;
    double ans=0.0;
    while(t--){
        int n;
        cin>>n;   
        for(int i=0;i<n;i++){
            cin>>a[i].x>>a[i].y;
        }
        ans+=CalcArea(a,n);
    }   
    printf("%lld\n",(long long)ans);
} 

 

 

正边形求面积

标签:border   space   ota   exp   load   rate   button   php   submit   

原文地址:https://www.cnblogs.com/lipu123/p/13922887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!