社区讨论

蒟蒻求助Codeforces Educational Round 133C

学术版参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo8dk4cl
此快照首次捕获于
2023/10/27 16:52
2 年前
此快照最后确认于
2023/10/27 16:52
2 年前
查看原帖

C. Robot in a Hallway(点击直达)

题目大意

有一个2m2*m的网格,一个机器人在(1,1)(1,1)的位置,现在想要走遍所有的格子,且每个格子最多只能经过一次
对于每个格子(i,j)(i,j)存在ai,ja_{i,j},表示至少经过ai,ja_{i,j}秒后才能进入这个格子。
每一秒内,机器人有两种动作;
  • 待在当前格子不动
  • 去往上下左右任意相邻的格子
求出走遍每一个格子的最小时间。

数据规模

tt组数据: 1t1041\leq t \leq 10^4
2m21052 \leq m \leq 2 * 10^5
0ai,j1090 \leq a_{i,j} \leq 10^9
Σm2105\Sigma m \leq 2 * 10^5

我的思路

由题意易得有三种遍历方法
    1. 顺时针走, 如;
    CPP
    1 -> 2 -> 3 -> 4
    			   |
    8 <- 7 <- 6 <- 5
    
    1. 逆时针走,如:
    CPP
    1 <- 8 <- 7 <- 6
    |			   |
    2 -> 3 -> 4 -> 5
    
    1. 绕着走,如:
    CPP
    1	 4 -> 5	   8
    |	 |	  |    |
    2 -> 3	  6 -> 7
    
假设所有aa均为零,可以得出每种方法走到每个格子对应的时间s1i,js1_{i,j}s2i,js2_{i,j}s3i,js3_{i,j}
接着,对于每种方法,遍历每个格子,对于任意(i,j)(i,j),求出其中ai,jsi,ja_{i, j} - s_{i, j}的最大值,即等待时间的最大值,若ai,jsi,ja_{i, j} \leq s_{i, j},则按0算
求出三种方法对应的最大等待时间后,则可以假设开始时等待到某一时刻后,直接畅通无阻地走完格子。所以,对于每种方法,花费的时间为2n1+max(si,j)2 * n - 1 + max(s_{i, j})
时间复杂度为Θ(n)\Theta (n)
不知出于何种原因,WA2的1920样例,目前错误原因未知,求助

回复

4 条回复,欢迎继续交流。

正在加载回复...