POJ 1265 Area(面积,pick公式)
来源:互联网 发布:java数据库连接池原理 编辑:程序博客网 时间:2024/04/27 17:03
转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove
题目:给出一些移动向量,最终形成一个多边形,求多边形的面积。以为多边形内部的格点数目和多边形边上的格点数目 。
首先面积可以通过叉积的性质求出。
多边形边上的格点数目可以枚举每条边求出。如果是水平或者垂直,显然可以得到,否则则是坐标差的最大公约数减1.(注这里是不计算端点的,端点必然在格点上,最后统计)
然后最后利用pick公式:多边形的面积=多边形边上的格点数目/2+多边形内部的格点数目-1。
#include<iostream>#include<fstream>#include<iomanip>#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#include<set>#include<map>#include<queue>#include<stack>#include<string>#include<vector>#include<sstream>#include<cassert>#define LL long long#define eps 1e-7#define inf 1<<30using namespace std;struct Point{ int x,y;}p[105];int n;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int xmul(Point p0,Point p1,Point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}int get_area(){ int area=0; for(int i=1;i<n-1;i++) area+=xmul(p[0],p[i],p[i+1]); return (area<0?-area:area);}int get_inedge(){ int ans=0; for(int i=0;i<n;i++){ int xx=abs(p[i].x-p[i+1].x); int yy=abs(p[i].y-p[i+1].y); if(xx==0&&yy==0) ans+=0; else if(xx==0) ans+=yy-1; else if(yy==0) ans+=xx-1; else ans+=gcd(xx,yy)-1; } return ans+n;}int main(){ int t,cas=0; scanf("%d",&t); while(t--){ scanf("%d",&n); p[0].x=0;p[0].y=0; for(int i=1;i<=n;i++){ int xx,yy; scanf("%d%d",&xx,&yy); p[i].x=p[i-1].x+xx; p[i].y=p[i-1].y+yy; } int area=get_area(); int edge=get_inedge(); int in=(area+2-edge)/2; printf("Scenario #%d:\n%d %d %.1f\n\n",++cas,in,edge,area/2.0); } return 0;}
- POJ 1265 Area(面积,pick公式)
- poj 1265 Area(Pick公式+Gcd关系+面积公式)
- 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 (有向面积, pick 定理)
- 【POJ 1265】 Area (Pick定理+叉积求多边形面积)
- POJ 1265 Area pick定理 + 多边形面积求法
- POJ 1265 Area(Pick定理、向量积求面积)
- pku 1265 Area(pick公式)
- POJ 1265 pick公式
- POJ 1265 pick公式
- poj-1265-Area-pick定理
- 宝宝的动静开始大了
- 静态库与动态库的生成与使用
- Google Android解包打包system.img的方法
- 搭建一个小型的asterisk电话系统 (四、增加voicemail功能)
- 制作system.img(yaffs2) 镜像
- POJ 1265 Area(面积,pick公式)
- jquery的刷选的查找和css
- 快速组建电商技术团队之策略
- android手机刷机的基础知识
- Codeforces Round #134 (Div. 2)C. Ice Skating
- ALSA编程指南
- 一个合格的程序员应该读过哪些书
- ALSA(lib和util)交叉编译与测试
- USACO section 2.1 Ordered Fractions(简单数学求约数加个排序)