2020牛客暑期多校训练营(第三场)C 计算几何
发布日期:2022-03-30 18:18:17
浏览次数:36
分类:博客文章
本文共 1620 字,大约阅读时间需要 5 分钟。
Operation Love
题目链接:
题目描述:
一个手掌图形,共有20个点,通过按顺时针或逆时针的顺序给定这20个点的坐标,判断是左手还是右手。左手和右手是对称的,给定的点集可能是这个手掌图形旋转平移后的结果,但手掌图形的大小不会改变。
思路:
读题后很容易发现手掌底部这条线段的长度为9是固定的,并且相邻的拇指和小指的边的长度不一样,这样就很容易能判断出来给定的手掌是右手还是左手,唯一缺少的条件是如何判断这些点是顺时针还是逆时针给你的。
鞋带公式可以判断这个问题:通过鞋带公式可以以点的坐标求出这个多边形的面积,当这个面积计算结果为负数为,说明给出的点集是以顺时针遍历的,反之则为逆时针。
还需要注意的是这题eps开到0.1就够用了
代码:
#includeusing namespace std;using ll = long long;const ll N = 1e6;const double PI = acos(-1.0);const double eps = 0.1;#define Test ll tesnum;tesnum = read();while(tesnum--)ll read();struct node{ double x,y;}point[N];int find(){ point[20].x = point[0].x; point[20].y = point[0].y; double ans = 0; for(int i = 0; i < 20; i++){ ans+=0.5*(point[i].x+point[i+1].x)*(point[i+1].y-point[i].y); } if(ans<0){ return 1;//顺 }else{ return 0;//逆 }}double dis(node a,node b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ Test{ for(int i = 0; i < 20; i++){ cin>>point[i].x>>point[i].y; } int fl = find(); bool f = false;//右手 for(int i = 0; i < 20; i++){ if(fabs(dis(point[i],point[(i+1)%20])-9.0)<=eps){ node x = point[i]; node y = point[(i+1)%20]; node z = point[(i+2)%20]; if((fl==1&&fabs(dis(y,z)-6.0)<=eps)||(fl==0&&fabs(dis(y,z)-8.0)<=eps)){ f = false; } if((fl==1&&fabs(dis(y,z)-8.0)<=eps)||(fl==0&&fabs(dis(y,z)-6.0)<=eps)){ f = true; } break; } } if(f){ cout<<"left"<
转载地址:https://www.cnblogs.com/cloudplankroader/p/13341747.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月01日 01时26分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
cocos2dx python项目创建
2021-06-30
程序员的成长历程,30岁以内的程序员请勿好大喜功!
2019-04-27
巨头夹缝求生存:菜鸟创业团队的辛酸苦辣 (本文转载)
2019-04-27
前富士康CEO程天纵:创新来自长尾,创业源于创客!
2019-04-27
SVN服务器搭建和使用
2019-04-27
cocos2dx 在windows上实现键盘输入
2019-04-27
iOS 也玩黑苹果,开发者已经将 iOS 底层内核成功运行在诺基亚机子上
2019-04-27
给2014年的中小手游开发商们,撑不下去就嫁了吧!
2019-04-27
NodeJS无所不能:细数10个令人惊讶的NodeJS开源项目
2019-04-27
崛起中的九大HTML5开发工具
2019-04-27
垃圾回收器
2019-04-27
Freetype 使用
2019-04-27
cocos2dx CCHttpRequest里面的内存引用计数的故事
2019-04-27
Cocos2d (v.3.0) rendering pipeline roadmap
2019-04-27
Android 获取手机总内存和可用内存等信息
2019-04-27
Android中获取系统内存信息以及进程信息
2019-04-27
C++ AMP 概述
2019-04-27
MAC下的SVN工具
2019-04-27
mac 终端 svn 命令
2019-04-27
快速搭建 Cocos2d-HTML5 开发调试环境 分享0
2019-04-27