poj 1654 Area 多边形面积
2013-08-02 17:27
357 查看
/* poj 1654 Area 多边形面积 题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> #include<string.h> const int N=1000000+10; const double eps=1e-8; struct point { double x,y; point(){} point(double a,double b):x(a),y(b){} }; int len,index; char t_s ; //基础函数///////////////////////// double mo_distance(point p1,point p2) { return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); } double mo_xmult(point p2,point p0,point p1)//p1在p2左返回负,在右边返回正 { return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); } bool mo_ee(double x,double y) { double ret=x-y; if(ret<0) ret=-ret; if(ret<eps) return 1; return 0; } bool mo_gg(double x,double y) { return x > y + eps;} // x > y bool mo_ll(double x,double y) { return x < y - eps;} // x < y bool mo_ge(double x,double y) { return x > y - eps;} // x >= y bool mo_le(double x,double y) { return x < y + eps;} // x <= y //求多边形面积 double area_polygon(point shang,point zhe) { point yuan; yuan.x=yuan.y=0; return mo_xmult(zhe,yuan,shang)/2; } /////////////////// int getpoint(point shang,point &zhe) { if(t_s[index]=='5') return 0;; char doo=t_s[index]; int n=1; while(t_s[index+1]==t_s[index]) { ++n; ++index; } ++index; if(doo=='1') { zhe.x=shang.x-n; zhe.y=shang.y-n; }else if(doo=='2') { zhe.x=shang.x; zhe.y=shang.y-n; }else if(doo=='3') { zhe.x=shang.x+n; zhe.y=shang.y-n; }else if(doo=='4') { zhe.x=shang.x-n; zhe.y=shang.y; }else if(doo=='9') { zhe.x=shang.x+n; zhe.y=shang.y+n; }else if(doo=='6') { zhe.x=shang.x+n; zhe.y=shang.y; }else if(doo=='7') { zhe.x=shang.x-n; zhe.y=shang.y+n; }else if(doo=='8') { zhe.x=shang.x; zhe.y=shang.y+n; } return 1; } int main() { int t; scanf("%d",&t); getchar(); while(t--) { gets(t_s); len=strlen(t_s); index=0; point shang(0,0),zhe; double area=0; while(getpoint(shang,zhe)) { area+=area_polygon(shang,zhe); shang=zhe; } if(area<0) area=-area; __int64 ret=(__int64)area,i; for(i=ret;i<=ret+2;++i) { if(mo_ee((double)i,area)) { printf("%I64d\n",i); break; }else if(mo_ee(0.5+i,area)) { printf("%I64d.5\n",i); } } } return 0; }
相关文章推荐
- poj 1654 Area (多边形求面积)
- poj 1654:Area 区域 ---- 叉积(求多边形面积)
- POJ 1654 Area [多边形面积]
- POJ 1654 Area 多边形面积
- POJ 1654 Area(多边形面积)
- poj 1654 Area(叉积求多边形面积)
- POJ 1654 || Area(求多边形面积
- poj 1654 Area(多边形面积)
- Area - POJ 1654(求多边形面积)
- poj 1654 area 简单多边形面积(简单题)
- poj 1654 Area 多边形面积
- POJ 1654 Area (计算多边形面积)
- [POJ1654]Area(计算几何-多边形的面积)
- POJ 1654 Area (多边形面积)
- POJ 1654 Area 求多边形的面积
- Area(poj1654多边形面积)
- POJ 1654 Area 多边形面积
- POJ 1654 Area(差积求多边形面积)
- 叉乘计算多边形面积:poj 1654 Area
- POJ1654 Area(多边形面积,叉积求三角形面积)