这里提供一种时间复杂度为 O(N+M) 的做法: 观察到,dp数组有且仅有 00000111110101011111000 这种前缀连续 1 中间可能有 01 交错段后缀连续 1 的情况,考虑存储 dp 数组内 1 出现的第一个位置和最后一个位置,被 1 完全包含的 0 出现的第一个位置和最后一个位置,发现可以使用这些信息直接转移。
#include <bits/stdc++.h>
using namespace std;
int n;
在一个长度为 n 的直线跑道上,从左到右依次标有编号 1,2,…,n 的格子。一个机器人初始时站在第 k 个格子上。
机器人接收一个由字符 L、R、? 组成的指令序列,并依次执行:
L:向左移动一个格子。如果当前已在第 1 格,则原地不动。R:向右移动一个格子。如果当前已在第 n 格,则原地不动。?:随机选择 L 或 R 之一执行(即随机向左或向右移动,边界规则同上)。执行完所有指令后,机器人可能停留在不同的格子上。你需要判断每个格子是否可能成为机器人的最终停留位置。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.