题解 | #E 小红的平行四边形#

小红平分糖果

https://ac.nowcoder.com/acm/contest/82394/A

由于需要三个点才能计算平行四边形面积,枚举点时间复杂度不符合要求,所以我们考虑枚举边。我们对每两个点构成的向量用哈希表分组,注意向量的方向性。这里不用存下每组所有的向量然后进行排序,只需要维护一个最大值和最小值,不过需要用到一点简***面几何。

我们将当前分组的向量平移到原点,由于需要求每组向量之间能够组成的最大面积(如图中的红色面积),这可以拆成两个平行四边形面积之和(如图中绿色的S1和S2)。由于S是用叉积计算的(带正负),所以其实红色面积是S2 - S1。因此,我们只需要维护每组S的最大值和最小值,两者之差即为该组的最大面积。。alt

from collections import defaultdict
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
mx, mn = defaultdict(lambda: -10 ** 18), defaultdict(lambda: 10 ** 18)
res = 0
for i in range(n):
    x1, y1 = a[i]
    for j in range(i):
        x2, y2 = a[j]
        dx, dy = x1 - x2, y1 - y2
        if dx > 0: dx, dy = -dx, -dy
        s = dy * x1 - dx * y1
        p = (dx, dy)
        mx[p], mn[p] = max(mx[p], s), min(mn[p], s)
        res = max(res, mx[p] - mn[p]) 
print(str(res) + '.0' if res else -1)



全部评论
这是我见过,最简洁的代码了,神
1 回复 分享
发布于 2024-06-14 11:08 上海

相关推荐

不愿透露姓名的神秘牛友
03-02 22:46
点赞 评论 收藏
分享
评论
8
3
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24847次浏览 491人参与
# 中国电信笔试 #
31080次浏览 283人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14147次浏览 209人参与
# 你的实习产出是真实的还是包装的? #
18817次浏览 330人参与
# 如果秋招能重来,我会____ #
96691次浏览 500人参与
# 春招至今,你的战绩如何? #
59982次浏览 543人参与
# 米连集团26产品管培生项目 #
12951次浏览 285人参与
# i人适合做什么工作 #
36914次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79511次浏览 219人参与
# 哪些公司真双非友好? #
69200次浏览 287人参与
# 金三银四,你的春招进行到哪个阶段了? #
21567次浏览 277人参与
# 找AI工作可以去哪些公司? #
7673次浏览 186人参与
# 从事AI岗需要掌握哪些技术栈? #
7676次浏览 251人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339915次浏览 2165人参与
# 面试尴尬现场 #
220755次浏览 861人参与
# 五一之后,实习真的很难找吗? #
102797次浏览 584人参与
# 你做过最难的笔试是哪家公司 #
30108次浏览 193人参与
# 你小时候最想从事什么职业 #
159840次浏览 2072人参与
# 应届生第一份工资要多少合适 #
20483次浏览 84人参与
# 阿里笔试 #
176460次浏览 1302人参与
# 一张图晒出你司的标语 #
3821次浏览 72人参与
# 面试被问期望薪资时该如何回答 #
382459次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务