正边形求面积
题目描述
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.
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 .
·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
This sample has a unique iceberg, which is a square of side 1.
Sample Explanation 2
![](https://img2020.cnblogs.com/blog/1914163/202011/1914163-20201103215942513-1083327051.png)
![](http://icpc.upc.edu.cn/upload/image/20200910/20200910211122_96413.jpg)
In this sample (depicted below) there are two icebergs, a triangle of area 200 and a pentagon of area 5900.5.
![](http://icpc.upc.edu.cn/upload/image/20200910/20200910211122_96413.jpg)
意思就是:给你一个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); }