前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一题】 广场舞

【每日一题】 广场舞

作者头像
编程范 源代码公司
发布2019-09-20 17:07:39
4420
发布2019-09-20 17:07:39
举报

是新朋友吗?记得先点蓝字关注我哦~

题目描述

LQ市的市民广场是一个多边形,广场上铺满了大理石的地板砖。地板砖铺得方方正正,就像坐标轴纸一样。

以某四块砖相接的点为原点,地板砖的两条边为两个正方向,一块砖的边长为横纵坐标的单位长度,则所有横纵坐标都为整数的点都是四块砖的交点(如果在广场内)。 广场的砖单调无趣,却给跳广场舞的市民们提供了绝佳的参照物。每天傍晚,都会有大批市民前来跳舞。舞者每次都会选一块完整的砖来跳舞,两个人不会选择同一块砖,如果一块砖在广场边上导致缺角或者边不完整,则没人会选这块砖。

(广场形状的例子参考:)

现在,告诉你广场的形状,请帮LQ市的市长计算一下,同一时刻最多有多少市民可以在广场跳舞?

解题思路

1

先找到所有的点 最大的横纵点和最小的横纵点,然后判断范围内的其他三个点是否在这个多边形中

2

每判断一次如果符合条件就计数加一,如不符合就重新遍历

以下图为例,我们不可能漫无边际的处理任意两个点,所以我们可以先找出所有坐标中的x,y的上下限,即图中红色虚线所围区域。之后对区域中的每个点进行判断。而如何判断一个点是不是在所围区域之内呢?这里需要用到两点式直线方程的概念,我们构成边界的点(x1,y1)(x2,y2),两两带入所判断点(x,y)的一个坐标dy,就可以求出另一个坐标dx。而求出来的坐标dx,如果在实际x的左侧,则不在范围内;反之,在范围内。

参考代码

END

感谢作者:LinYuan

原文链接

https://www.dotcpp.com/oj/problem1838.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程范 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档