专栏文章
题解:AT_abc418_e [ABC418E] Trapezium
AT_abc418_e题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio8yb93
- 此快照首次捕获于
- 2025/12/02 15:18 3 个月前
- 此快照最后确认于
- 2025/12/02 15:18 3 个月前
题意
给你一些不共线的点,求他们能组成多少梯形。
这里的梯形是包括平行四边形的。
题解
直接枚举四个点会炸。我们考虑梯形的一对边是平行的,所以我们可以把所有平行的边归类。
题目保证没有三个点共线,所以我们直接计算每种边有多少条就可以了,每种的方案是 。
然后你发现自己连第一个样例都过不去。问题在于,如果存在一个平行四边形,那么他会被横着竖着算两次,因此我们还需要计算所有的平行四边形的数量。这个其实和梯形是一样的,只不过我们需要把所有既平行又相等的边归为一类,统计所有的平行四边形数量。但是这样依然存在计算两次的问题,所以我们把得到的答案再减半就是平行四边形的数量了。
实现上可以用
unordered_map,但是斜率如果直接用浮点数的话会炸。这里提供两种方法:实现起来,第一种比较简单,常数较小;第二种比较保险(当然前提是你的哈希写的比较好,没有碰撞的风险。),常数略大。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...