QOJ.ac

QOJ

Limite de temps : 3.0 s Limite de mémoire : 512 MB Points totaux : 100 Hackable ✓

#7527. 衣柜的门

Statistiques

Rikka 买了一个新衣柜。这个衣柜的门安装在 $N$ 层:如果我们观察衣柜,可以看到第一扇门在最前面,第二扇门隐藏在它后面,以此类推,直到最后一扇第 $N$ 扇门。

众所周知,Rikka 现在很擅长数学,所以她更容易将这些门想象成位于同一个欧几里得平面上。

每扇门由一对滑动部件组成。考虑一扇门,我们可以假设门的部分是由某条直线 $L$ 分隔的两个半平面。注意,衣柜的设计使得直线 $L$ 不一定是垂直的。

此外,在直线 $L$ 上的某一点放置了两个把手,门的两部分各有一个把手。Rikka 可以抓住一个把手并沿垂直于 $L$ 的方向拉动它,从而将门的相应一半沿该方向移动。Rikka 可以独立地拉动同一扇门两个部分上的把手。

为了打开衣柜,Rikka 依次从第 1 扇门到第 $N$ 扇门打开所有的门。在 Rikka 开始打开下一扇门后,之前所有门的滑动部件就不能再移动了。Rikka 只有在把手在整个移动过程中不被之前的门阻挡时,才能拉动它。因此,如果 Rikka 没有把某扇门打开得足够宽,它可能会在未来阻挡某些后续门的开启。

Rikka 想从她的衣柜里取出 $M$ 个小物品。每个物品都可以表示为平面上给定坐标的一个点。她想打开这些门,使得没有任何物品被任何门阻挡。

作为一名数学家,Rikka 想要最小化她移动把手的总距离。请帮助她计算这个最小值。

输入格式

输入的第一行包含两个整数 $N$ 和 $M$ —— 分别是门的数量和物品的数量 ($1 \le N \le 10^5$, $3 \le M \le 10^5$)。

接下来 $N$ 行,按从第一扇门(表面的门)到第 $N$ 扇门(最里面的门)的顺序描述这些门。每扇门由四个实数描述,小数点后不超过 15 位。这些数字是把手在门关闭时所在点 $H$ 的坐标 $x_h$ 和 $y_h$,以及向量 $D$ 的坐标 $x_d$ 和 $y_d$,使得将门分成两半的直线 $L$ 包含点 $H$ 且垂直于向量 $D$。

接下来 $M$ 行,包含物品的描述。每个物品由其坐标 $x$ 和 $y$ 描述 —— 两个实数,小数点后不超过 15 位。

坐标的绝对值不超过 10。每扇门的向量 $D$ 的长度不小于 $\frac{1}{10}$。你可以假设有三个不共线的物品。

注意,测试数据生成的过程中没有退化情况(例如所有点过于接近而共线等),因此测试数据不旨在造成数值稳定性问题。

输出格式

输出把手移动向量长度之和的最小值。如果答案与最优解的绝对误差或相对误差不超过 $10^{-10}$,则认为答案正确。

样例

输入 1

3 4
-3 3 0.6 -0.3
4 -1 1 1
1 -4 1 0
-2 3
2 3
2 -2
-0.5 -2

输出 1

20.27523290755122432

说明

样例中有三扇门,门分别用红色、绿色和蓝色标记。对于每扇门,实线表示把手移动的轨迹,虚线表示门被移动时两半的位置。黑色十字表示物品。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.