题解P8073 [COCI2009-2010#7] BAKICE
P8073 [COCI2009-2010#7] BAKICE
题意
对于每位乘客(用 X 表示)会寻找距离(欧几里得距离)自己最近的座位(用 L 表示)。
坐座位满足以下原则:
- 如果有别人离这个椅子更近,那这个人会选择下一张最近的椅子。
- 如果有别人离这个椅子一样近,那这个椅子与这些人都会发生 1 次爆炸。
(不存在一个人离两个人相同距离)。
分析
因为对于一个人不存在有两张椅子离其距离相等,
那么我们就可以认为这个人会选择离自己最近的目前没有人坐的椅子。
又看到数据范围 $1\le R,C\le 100$,非常小,那我们不妨暴力一点。
我们暴力处理出所有椅子与人的距离,并进行排序。
对于我们当前选择的这条线路分情况讨论:
- 如果当前这个人已经有了一个位置,那么当前的线路无意义,直接跳过。
- 如果当前这张椅子未选,直接选择这张椅子。
- 如果当前这张椅子被选,并且之前那个人的距离更近,跳过。
- 如果当前这张椅子被选,并且之前那个人的距离和这次距离相等,发生一次爆炸。
注意
- 一张椅子只会发生一次爆炸,因此爆炸后我们要对这个椅子进行标记,防止重复运算。
- 题目所求为欧几里得距离,而不是曼哈顿距离。

浙公网安备 33010602011771号