poj 1654 Area 多边形面积
/*
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[N];
//基础函数/////////////////////////
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 多边形面积 G++会WA
#include<stdio.h> #include<algorithm> #include <cstring> using namespace std; type ...
- POJ 1654 Area 凸包面积
水题直接码... /********************* Template ************************/ #include <set> #include < ...
- poj 1654 Area (多边形求面积)
链接:http://poj.org/problem?id=1654 Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- poj 1654 Area(计算几何--叉积求多边形面积)
一个简单的用叉积求任意多边形面积的题,并不难,但我却错了很多次,double的数据应该是要转化为long long,我转成了int...这里为了节省内存尽量不开数组,直接计算,我MLE了一发...,最 ...
- 2018.07.04 POJ 1654 Area(简单计算几何)
Area Time Limit: 1000MS Memory Limit: 10000K Description You are going to compute the area of a spec ...
- POJ 1654 Area
题意:从原点出发,沿着8个方向走,每次走1个点格或者根号2个点格的距离,最终回到原点,求围住的多边形面积. 分析:直接记录所经过的点,然后计算多边形面积.注意,不用先保存所有的点,然后计算面积,边走变 ...
- POJ 3348 /// 凸包+多边形面积
题目大意: 给定的n个点 能圈出的最大范围中 若每50平方米放一头牛 一共能放多少头 求凸包 答案就是 凸包的面积/50 向下取整 /// 求多边形面积// 凹多边形同样适用 因为点积求出的是有向面积 ...
- poj 1654 Area(多边形面积)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17456 Accepted: 4847 Description ...
- poj 1654 Area(求多边形面积 && 处理误差)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16894 Accepted: 4698 Description ...
随机推荐
- Delphi word
[转载]在Delphi中使用CreateOleObject方法 (2011-08-24 14:20:47) 转载▼ 标签: 转载 原文地址:在Delphi中使用CreateOleObject方法作 ...
- Mobile testing基础之Native、Web、Hybrid、activity、webview
应用一词指的是app,即application.原生应用指的是能直接运行于当前操作系统的应用程序:web应用指需要在浏览器中运行的网页应用,由于界面体验.功能上都更加强大,可媲美原生应用,故称web应 ...
- unity3d自己写角色移动脚本
废话没有,直接上代码: using UnityEngine; using System.Collections; public class SuperWalk : MonoBehaviour { pu ...
- html中a标签中的onclick和href的使用
1. 链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接): 假设链接中同时存在 href 与 onclick,如果想让 href 属性下 ...
- git ssh key for github
第一:检查.ssh是否存在(ls -al ~/.ssh) $ ls -al ~/.ssh Lists the files in your .ssh directory, if they exist 第 ...
- HDU-4686 Arc of Dream 构造矩阵
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 因为ai = ai-1*AX+AY ,bi = bi-1*BX+BY ,那么ai*bi=AX*B ...
- 当很多连接到你的数据库时,报这种错误“已超过了锁请求超时时段” SqlServer数据库正在还原的解决办法
1)管理器不会主动刷新,需要手工刷新一下才能看到最新状态(性能方面的考虑) 2)很少情况下,恢复进程被挂起了.这个时候假设你要恢复并且回到可访问状态,要执行: RESTORE database ...
- android-serialport-api and libusb for android
libusb for android: Even if you get it compiled, Android is probably not going to let you access the ...
- Hadoop概念学习系列之URI深入(三十二)
ls / ------------------------ 这是查本地Linux上的根 hadoop fs -ls / ------------- 这是查hdfs上的根 或者, had ...
- Java按字节截取字符串(GBK编码、UTF-8编码实现)
package FileDemo; import java.io.IOException; public class CutStringTest { /** * @param args * @thro ...