博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2036 改革春风吹满地
阅读量:4654 次
发布时间:2019-06-09

本文共 836 字,大约阅读时间需要 2 分钟。

 地址:

 解题思路:叉乘的运用 

 原理是在平面上取(0,0)来分割多边形为多个三角形,然后用叉乘来求三角形的面积(有向)再求和。这样的话可以把凸N多边形转化为N个三角形,然后求解N个三角形即可,输入顶点的顺序        无论是顺时针还是逆时针均可。

* 题目要求:计算多边形面积

* 方法:把n多边形分割成n-2个三角形,分别求和,然后相加

* 注意:分割的所有三角形有一个公共的顶点,这里选择0点位公共点 

* 注:题中给出的点的顺序为逆时

* 叉乘的性质:设两向量P和Q 

* 1.P ×Q > 0 则Q在P的逆时针方向 

* 2.P ×Q < 0 则Q在P的顺时针方向

* 3.P ×Q = 0 则Q和P共线,方向可能相同也可能不相同 

参考资料:

之所以不用海伦公式:有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:S=√[p(p-a)(p-b)(p-c)] 而公式里的p为半周长: p=(a+b+c)/2

是由于1:计算量大。2:精度损失

1 #include
2 #include
3 typedef struct point 4 { 5 int x,y; 6 }point; 7 point a[110];//n的范围限制 8 double area(point p,point q) 9 {10 return p.x*q.y-q.x*p.y;//叉乘计算面积的公式,简化的,是以(0,0)为起始点划分的11 }12 int main()13 {14 int i,n;15 double sum;16 while(~scanf("%d",&n)&&n)17 {18 for(i=0;i

 

 

转载于:https://www.cnblogs.com/mycapple/archive/2012/08/06/2624617.html

你可能感兴趣的文章
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
反射的所有api
查看>>
css 定位及遮罩层小技巧
查看>>
[2017.02.23] Java8 函数式编程
查看>>
sprintf 和strcpy 的差别
查看>>