盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

怎么理解xyz的判断点在凸包内模板

时间:2024/1/9作者:未知来源:盘绰网教程人气:


[摘要]本篇文章给大家带来的内容是关于如何理解xyz的判断点在凸包内模板,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。int n,m,tot; struct point {double ...
本篇文章给大家带来的内容是关于如何理解xyz的判断点在凸包内模板,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

int n,m,tot; struct point { double x,y; }p[100000],a[100000],ss; bool cmp(point A,point B) { if(A.x!=B.x) return A.x<B.x; return A.y<B.y; } point operator -(point A,point B) { point c; c.x=A.x-B.x; c.y=A.y-B.y; return c; } double cross(point A,point B) { return A.x*B.y-B.x*A.y; } void dopack() { tot=0; for(int i=1;i<=n;i++) { while(tot>1&&cross(p[tot-1]-p[tot-2],a[i]-p[tot-2])<=0)tot--; p[tot++]=a[i]; } int k=tot; for(int i=n-1;i>0;i--) { while(tot>k&&cross(p[tot-1]-p[tot-2],a[i]-p[tot-2])<=0)tot--; p[tot++]=a[i]; } if(n>1)tot--; } bool check(point A) { int l=1,r=tot-2,mid; while(l<=r) { mid=(l+r)>>1; double a1=cross(p[mid]-p[0],A-p[0]); double a2=cross(p[mid+1]-p[0],A-p[0]); if(a1>=0&&a2<=0) { if(cross(p[mid+1]-p[mid],A-p[mid])>=0)return true; return false; } else if(a1<0) { r=mid-1; } else { l=mid+1; } } return false; }

以上就是如何理解xyz的判断点在凸包内模板的详细内容,更多请关注php中文网其它相关文章!


学习教程快速掌握从入门到精通的SQL知识。

关键词:  如何理解xyz的判断点在凸包内模板





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版