poj 1265 Area(pick 定理)
2012-05-08 20:10
453 查看
其实完全没想做这题的,因为不想这个时候在花些时间学习新的方法,但是打开了这道题就想把它做出来,像是一种本能吧。以前从没听过pick 定理,更何谈用它做题,所以只能上网搜了一些关于它的讲解,发现其实很简单,就是一个公式:
Pick 定理 设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 N+1/2L-1=S.
但往往越是简单的公式,推导过程越是复杂。看了一下维基百科上的证明,感觉不是很详细,但是他下面有给出的外部链接,其中有一篇全是繁体字的,偶然搜到一篇博客,上面有这篇文章的简体翻译,简要看了一下,没细研究,留下链接,以后有时间慢慢专研吧。
http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/page4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CN
恩,接下来说一下1265题,题目不是给出m的点,而是给出每个点在
x轴和y轴的距离,也就是每次都要加上求一个点的坐标才是它的自己的坐标,刚开始读题的时候没弄清楚,WA了两次,然后就是套模板了,
给出代码:
Pick 定理 设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 N+1/2L-1=S.
但往往越是简单的公式,推导过程越是复杂。看了一下维基百科上的证明,感觉不是很详细,但是他下面有给出的外部链接,其中有一篇全是繁体字的,偶然搜到一篇博客,上面有这篇文章的简体翻译,简要看了一下,没细研究,留下链接,以后有时间慢慢专研吧。
http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/page4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CN
恩,接下来说一下1265题,题目不是给出m的点,而是给出每个点在
x轴和y轴的距离,也就是每次都要加上求一个点的坐标才是它的自己的坐标,刚开始读题的时候没弄清楚,WA了两次,然后就是套模板了,
给出代码:
#include <stdio.h> #include <math.h> #include <stdlib.h> struct node { int x; int y; }p[105]; int edge , inside ; double s ; int gcd ( int a , int b ) { if ( b == 0 ) return a; else return gcd ( b , a%b ); } int edgenum(int n ) { int i,ret=0; for(i = 1 ; i <= n ; i++) ret+=gcd(abs(p[i].x-p[(i+1)%n].x),abs(p[i].y-p[(i+1)%n].y)); return ret; } int area( int n ) { int i; s=0; for(i = 1 ; i <= n ; i++) s+=p[(i+1)%n].y*(p[i].x-p[(i+2)%n].x); return (fabs( s )- edge )/2 +1; } int main() { int cas , i , j , n , x , y ; scanf ( "%d" , &cas ); for ( j = 1 ; j <= cas ; j++ ) { scanf ( "%d", &n ); x = y = 0 ; p[0].x = p[0].y = 0; for ( i = 1 ; i <= n ; i++) { scanf ( "%d%d" , &x , &y); p[i].x = p[i-1].x + x; p[i].y = p[i-1].y + y; } edge = edgenum ( n ); inside = area ( n ); printf ( "Scenario #%d:\n" , j ); printf ( "%d %d %.1lf\n\n" , inside , edge , fabs(s)/2.0 ); } return 0; }
相关文章推荐
- POJ 1265 Area (计算几何)(Pick定理)
- POJ 1265 Area (有向面积, pick 定理)
- poj 1265 Area(Pick定理)
- poj 1265 Area (Pick定理+求面积)
- POJ 1265 Area(PICK定理)
- poj 1265 Area( pick 定理 )
- POJ 1265 Area (pick定理)
- POJ 1265 Area (pick定理)
- POJ 1265 Area(ZOJ 1032)(pick定理)
- poj 1265 Area(pick定理)
- POJ题目1265 Area(PICK定理)
- POJ 1265 Area(Pick 定理)
- poj 1265 pick定理的应用—Area
- [poj 1265]Area[Pick定理][三角剖分]
- poj 1265 Area(pick 定理)
- poj 1265 Area(pick 定理)
- POJ 1265-Area(多边形面积、边点、内点-pick定理、叉积)
- Area - POJ 1265(pick定理求格点数+求多边形面积)
- poj 1265 Area(pick 定理)
- POJ 1265 Area(计算几何Pick定理)