传送门

题意:

给一个2 * m的数组,令行从0开始,列从1开始,从(0,1)出发,不重复地走完所有格子,每个格子要等a[i][j]秒才能走。求走完所以格子的最小时间。

思路:

创建一个数组b,b[i][j]表示从(i,j)开始一直走到底再转向下一行走回来所花费的时间,这样只要枚举从哪一个格子开始走到底就行了。为了防止往后走再返回的时间小于前面需要等待的时间,让b[i][j] = max(b[i][j + 1] + 1, max(a[i ^ 1][j], a[i][j] + (m - j) * 2 + 1))即可。最后枚举的时候第奇数列从第一行走到底,偶数列从第二行走到底。

代码:

#include <iostream>
#include <algorithm>
#define int long long
#define endl '\n'using namespace std;const int maxn = 3e5 + 7;int t, m;
int a[2][maxn], b[2][maxn];void solve() {cin >> m;for (int i = 0; i < 2; i++)for (int j = 1; j <= m; j++)cin >> a[i][j], a[i][j]++;a[0][1]--;b[0][m + 1] = b[1][m + 1] = 0;for (int j = m; j >= 1; j--)for (int i = 0; i < 2; i++)b[i][j] = max(b[i][j + 1] + 1, max(a[i ^ 1][j], a[i][j] + (m - j) * 2 + 1));int ans = 0x3f3f3f3f;int cur = 0;for (int j = 1; j <= m; j++) {int k = j & 1;ans = min(ans, max(b[k ^ 1][j], cur));cur = max(max(a[k][j] + (m - j) * 2, a[k ^ 1][j] + (m - j) * 2 + 1), cur);}cout << ans << endl;
}signed main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> t;while (t--) solve();
}

Robot in a Hallway相关推荐

  1. cf Educational Codeforces Round 133 C. Robot in a Hallway

    原题: There is a grid, consisting of 2 rows and m columns. The rows are numbered from 1 to 2 from top ...

  2. C. Robot in a Hallway Educational Codeforces Round 133 (Rated for Div. 2)dp

    dp问题 There is a grid, consisting of 22 rows and mm columns. The rows are numbered from 11 to 22 from ...

  3. codeforces 1716 C Robot in a Hallway

    input: 4 3 0 0 1 4 3 2 5 0 4 8 12 16 2 6 10 14 18 4 0 10 10 10 10 10 10 10 2 0 0 0 0 output: 5 19 17 ...

  4. Codeforces edu C. Robot in a Hallway

    题意,给一个两行m列的矩阵,要求遍历每一个点并且每一个点只能遍历一遍,并且每个点在开始的ai,j时间内都会锁住不能访问,要求最短时间 思路:稍加思索就能发现,对于一个只有两行的图来说,只有两种方式能遍 ...

  5. CF 1716 C. Robot in a Hallway 思维 2000

    题意:有 2 行 n 列个点,每个点当经过 a[i][j] 秒时才能通过,从第一行第一列的点出发,每个点只能通过一次,求通过所有点的最少时间. 思路:因为每个点只能走一次,所以我们可以 S 形通过.当 ...

  6. C. Robot in a Hallway(递推/前缀和/动态规划)

    题目 题意 给定一个2*m的格子,要求从点(1,1)出发,并遍历完其他格子,且每个格子只能走一次.每个格子(i,j)有设定锁定时间a[i][j],表示在时刻a[i][j]之前,不能访问该格子. 问按要 ...

  7. 【细节很多的dp】Educational Codeforces Round 133 (Rated for Div. 2) C. Robot in a Hallway

    参考题解 题意: 有一个 2 2 2 行, m m m 列的方格,初始在 ( 1 , 1 ) (1,1) (1,1),每个格子有一个开放时间,开放时间后才能到达,每个格子只能被到达一次,你可以任意选择 ...

  8. 八月五日个人训练记录

    一.cf补题 1.C. Robot in a Hallway 参考 利用dp先把每一个位置往前走到末尾再绕回来到达下面(或上面)位置所需要的最小时间求出,然后假设这个点之前走蛇形,这个点之后走直线,去 ...

  9. Educational Codeforces Round 133 (Rated for Div. 2)(CD题解)

    Educational Codeforces Round 133 (Rated for Div. 2)CD题解 过AB补CD C. Robot in a Hallway 题意 题意:现有 2∗m 的方 ...

最新文章

  1. Linux系统的启动流程以及做个小小的Linux
  2. 运行时常量池在哪里_C++干货系列——从编译期常量谈到constexpr(一)
  3. php nginx 域名重定向,Nginx默认虚拟主机、用户认证、域名重定向
  4. 自适应好看的引导单页源码-无后台
  5. apache2.2.15与PHP5.3.3安装设置完成后,apache启动失败
  6. 《树莓派开发实战(第2版)》——2.9 利用RDP远程控制树莓派
  7. 显示多文档标签_办公小技巧:用好WPS 2019文件名标签
  8. 深度学习中为什么要使用多于一个epoch?
  9. 前 k 条最短路径算法
  10. 微博java版_新浪微博JAVA通用版
  11. 未来15年,还有一波“增量”机会
  12. 计算机无法访问指定设备路径或文件怎么回事,window无法访问指定设备 路径或文件是怎么回事...
  13. OSG加载倾斜摄影数据
  14. win8 修改背景色为绿豆沙颜色
  15. ESP32设备驱动-BMP180气压温度传感器驱动
  16. 小X与神牛(dfs)
  17. 阿里双十一大促,技术准备只做了这两件事情?
  18. ukf源程序 matlab,《卡尔曼滤波原理及应用-MATLAB仿真》程序-5.1UKF
  19. 自动解锁Bitlocker加密硬盘
  20. Miniconda软件安装教程(Windows)

热门文章

  1. 对仿真glbl.v文件的理解
  2. 在线课程|存储与计算分离,京东在Elasticsearch上的实践分享
  3. python yield 用法详解
  4. 乐享集团吹响兴趣电商出海集结号
  5. 【C语言】实现三子棋代码
  6. Android编译流程
  7. iphone紧急联络使用教程(苹果的紧急联络有什么用)
  8. 组合模式(Composite模式)详解
  9. 无法安装此计算机不存在英特尔,win2008 server r2 intel网卡驱动无法安装不存在英特尔PRO适配器的解决方法...
  10. Nginx 访问日志配置