Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 3.47 KB

File metadata and controls

60 lines (44 loc) · 3.47 KB

ROI 2019/2020

SpbKOSHP 2019

VKOSHP 2019

E. Hide-and-Seek for Robots

题意:有一个$n \times m$个格子,每个位置上放着一个机器人。每个机器人有个朝向,用UDLR表示向上,向下,向左,向右。现在每次你可以选择一个机器人,把朝向顺时针或者逆时针转$90^\circ$。求出最少操作次数,使得不存在一对机器人互相可见。

$1 \le n, m \le 2000$

题解:根据题目视野的限制,只有UD或者LR的机器人对可能互相可见,其他对都不可能,于是可以把UDLR分开考虑。

观察可以发现,假设我们最终已经调整好每个机器人,考虑UD的机器人们。我们一定可以找到一条从第一列到最后一列的分界线,使得分界线上方不存在D的机器人,分界线下方不存在U的机器人。如果假设第$c$列的分界线格子所在行是$border(c)$,那么必有$|border(c)-border(c-1)| \le 1$。对于LR的机器人也类似。

假设我们找出了UD的分界线,LR的分界线,那么那些朝向不合法的机器人肯定可以通过逆时针或者顺时针转一次使得它合法。根据分界线的限制,我们可以DP出来最优的分界线。

ROI Regional 2020

Day 1

Day2

ROI 2020