hdu2036(多边形面积)
2015-11-10 17:16
225 查看
Description
“ 改革春风吹满地,
不会AC没关系;
实在不行回老家,
还有一亩三分地。
谢谢!(乐队奏乐)”
话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。
好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。
这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。
发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧...
Input
输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
Output
对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
每个实例的输出占一行。
Sample Input
3 0 0 1 0 0 1
4 1 0 0 1 -1 0 0 -1
0
Sample Output
0.5
2.0
一开始的思路是把多边形分割为三角形,然后用海伦公式求三角形面积,
但后来发现这个方法不适用于凹多边形
此外,海伦公式的计算量大,精度低
由此有这么几个思路:
1.向量叉乘求三角形面积
求出来是有向面积,有正负,所以凹多边形也可以求!
代码如下:
“ 改革春风吹满地,
不会AC没关系;
实在不行回老家,
还有一亩三分地。
谢谢!(乐队奏乐)”
话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。
好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。
这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。
发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧...
Input
输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
Output
对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
每个实例的输出占一行。
Sample Input
3 0 0 1 0 0 1
4 1 0 0 1 -1 0 0 -1
0
Sample Output
0.5
2.0
一开始的思路是把多边形分割为三角形,然后用海伦公式求三角形面积,
但后来发现这个方法不适用于凹多边形
此外,海伦公式的计算量大,精度低
由此有这么几个思路:
1.向量叉乘求三角形面积
求出来是有向面积,有正负,所以凹多边形也可以求!
代码如下:
#include<iostream> #include<cmath> #include<iomanip> using namespace std; struct point { int x; int y; }; point a[100]; double area(point m,point n) { return (double)(m.x*n.y - m.y*n.x)/2; } int main() { int n; while(cin>>n) { if(n==0) break; for(int i = 0;i<n;i++) cin>>a[i].x>>a[i].y; double sum = area(a[n-1],a[0]); for(int i = 1;i<n;i++) { sum+=area(a[i-1],a[i]); } cout<<fixed<<setprecision(1)<<sum<<endl; } }
相关文章推荐
- session分两种
- LeetCode OJ:Restore IP Addresses(存储IP地址)
- ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名
- Android导出与使用带资源的lib包
- mysql触发器内执行shell脚本,shell脚本用curl访问php网页
- 编程之美-程序理解和时间分析整理
- Python基础教程100例 练习1
- Java——输出年月日
- comet4j解析
- Android高级控件的使用
- 黑马程序员--OC基础--NSFileManager用法深入
- 口袋笔记VS松鼠笔记
- Linux 下wdcp支持两种安装方式
- 02 (maven+SSH)网上商城项目实战之需求分析
- 自学php-PCRE兼容正则表达式
- POJ_4002 && HDU_4122 Alice's mooncake shop(RMQ)
- windows访问rhel7的共享,提示“您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限”
- 【虾说】这些细节,会害死程序员
- 使用JSP页面生成PDF报表
- 更新GitHub上自己 Fork 的代码与原作者的项目进度一致