POJ1265 Area
来源:互联网 发布:手机淘宝与支付宝解绑 编辑:程序博客网 时间:2024/05/22 08:20
题目大意:
给一个平面上的简单多边形,求边上的点,多边形内的点,多边形面积。
1、以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其中,dxdy分别为线段横向占的点数和纵向占的点数。如果dx或dy为0,则覆盖的点数为dy或dx。
2、Pick公式:平面上以格子点为顶点的简单多边形的面积=边上的点数/2+内部的点数+1。
3、任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和。
#include<cstdio>#include<string>#include<iostream>#include<algorithm>using namespace std;struct node{ int x,y;} point[110];int n;int gcd(int a,int b){ if(b == 0) return a; return gcd(b,a%b);}int Area(node a,node b){ return a.x*b.y-a.y*b.x;}int main(){ int T,case1=0; scanf("%d",&T); while(T--) { case1++; int a=0,p=0,dx,dy,i; scanf("%d",&n); point[0].x=0; point[0].y=0; for(i=1; i<=n; i++) { scanf("%d%d",&point[i].x,&point[i].y); dx=point[i].x; if(dx<0) dx=-dx; dy=point[i].y; if(dy<0) dy=-dy; p+=gcd(dx,dy); point[i].x+=point[i-1].x; point[i].y+=point[i-1].y; a+=Area(point[i],point[i-1]); } if(a<0) a=-a; printf("Scenario #%d:\n",case1); printf("%d %d %.1f\n\n",(a-p+2)/2,p,0.5*a); } return 0;}
0 0
- POJ1265 Area
- POJ1265-Area
- POJ1265----Area
- POJ1265 Area
- poj1265 Area
- Poj1265 Area (Pick定理)
- poj1265 in e area
- POJ1265 Area 数学公式
- poj1265 Area(计算几何)
- [POJ1265]Area(计算几何)
- Area poj1265 (pick公式+网格)
- poj1265
- poj1265
- poj1265
- poj1265--Area(求多边形面积+匹克定理)
- POJ1265 Area (Pick定理,多边形面积,计算几何)
- 【给小学奥数跪了-Pick公式与欧几里德算法】poj1265—Area
- poj1265-Area 皮克定理(求多边形的面积,内部的点数,边上的点数)
- myBatis :以接口方式交互数据
- 如何Mysql 复制中的延迟?
- 链表
- 初学qt——数据库连接
- Mysql入门
- POJ1265 Area
- Hibernate3.3.2使用c3p0最为数据库连接池
- putty连接Linux中文乱码解决方案
- kafka
- Wex5仿微店代码学习与分析
- ruby中星号(*)的作用
- ToggleButton
- Linux:Centos7升级内核
- Android Xfermode 实战 实现圆形、圆角图片