/ :求一个多边形中在网格内点的个数,在边上的点的个数,多边形的面积
//poj2954:求三角形内整点个数 ,两题大同小异,
//利用pick公式:面积=内点+边上的点/2-1;
代码1:poj1265
#include<iostream>
#include<cstdio>
#include<math.h>
#define abs(x)(x>=0? x:-x)
int n;
int gcd(int a,int b)
{
return b? gcd(b,a%b):a;
}
int area(int x1,int y1,int x2,int y2)
{
return (x1*y2-x2*y1);
}
int main()
{
int cas;
scanf("%d",&cas);
int k,i;
for(k=1;k<=cas;k++)
{
scanf("%d",&n);
int in=0;
int on=0;
int x1=0,y1=0,x2,y2;
double res=0;
for(i=0;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
on+=gcd(abs(x),abs(y));
x2=x1+x;y2=y1+y;
res+=area(x1,y1,x2,y2);
x1=x2;y1=y2;
}
printf("Scenario #%d:\n",k);
res/=2.0;
in=fabs(res)+1-on/2.0;
printf("%d %d %0.1lf\n\n",in,on,res);
}
return 0;
}
代码2:2954
#include<iostream>
#include<cstdio>
#include<math.h>
int gcd(int a,int b)
{
return b? gcd(b,a%b): a;
}
struct point
{
int x,y;
};
point p[3];
int grid_onedge(int n,point *p)
{
int i,ret=0;
for(i=0;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 grid_inside(int n,point *p)
{
int i,ret=0;
for(i=0;i<n;i++)
{
ret+=p[(i+1)%n].y*(p[i].x-p[(i+2)%n].x);
}
return (abs(ret)-grid_onedge(n,p))/2+1;
}
int main()
{
while(scanf("%d%d%d%d%d%d",&p[0].x,&p[0].y,&p[1].x,&p[1].y,&p[2].x,&p[2].y)
,p[0].x||p[0].y||p[1].x||p[1].y||p[2].x||p[2].y)
{
printf("%d\n",grid_inside(3,p));
}
return 0;
}
分享到:
相关推荐
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
北大POJ1159-Palindrome 解题报告+AC代码
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
北大POJ2002-Squares 解题报告+AC代码
POJ1048,加强版的约瑟夫问题 难度中等
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
poj分类poj分类poj分类poj分类
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
Poj中一些题目的源代码,里面共有二十多道题目,OI
POJ1083的代码,POJ1083的代码,POJ1083的代码
POJ上的一道题目,自己写的代码,因为想下载别人的, 所以就放上了。
poj 百练 题目分类 poj 百练 题目分类
解决算法问题 poj1082, poj1150, poj1180, poj1201, poj1222,代码完成所给题目要求。
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
POJ2968代码有用,欢迎下载,POJ代码