首页 > 试题广场 >

铁道双子的大追捕

[编程题]铁道双子的大追捕
  • 热度指数:152 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}

\hspace{15pt}橘光姐姐背着橘望妹妹偷偷和旺仔哥哥在火车上约会,然而橘望妹妹作为这辆列车的列车长,会一直在火车上按照规定进行巡逻。旺仔哥哥必须和橘光姐姐一起在火车上一边亲密约会一边闪转腾挪,以此来防止被橘望妹妹发现。

\hspace{15pt}橘望妹妹掌管的这列火车由 n 节车厢组成,从车头到车尾依次编号为 1n 的正整数。初始时,旺仔哥哥橘光姐姐在车厢 m 上进行约会,橘望妹妹正在车厢 k 上朝着方向 d 进行巡逻

\hspace{15pt}每分钟列车会处于两种状态之一:行驶或停车。旺仔哥哥已经摸清了未来若干分钟中列车的状态,并整理为了一个字符串 ss_i = 0 表示第 i 分钟该列车处于行驶状态,s_i = 1 表示第 i 分钟该列车处于停靠状态。

\hspace{15pt}按照规定,橘望妹妹的移动方式如下:沿着她原本的移动方向(向车头或向车尾)移动到相邻的一节车厢。如果移动结束时,橘望妹妹进入了第 1 节或第 n 节车厢,她就会改变移动方向。换句话说,橘望妹妹在整个过程中,会从车头到车尾再返回,每次移动一节车厢,因此她的行动轨迹是固定的。

\hspace{15pt}旺仔哥哥的移动取决于列车的状态。如果列车正在行驶,旺仔哥哥可以移动到任意一个相邻的车厢,或者留在原地不动;如果列车停靠在车站并处于空闲状态,则旺仔哥哥可以离开列车(即他现在不在任何车厢中),然后,如果这不是终点站,他可以重新进入列车中的任意一节车厢(不一定是刚离开的那节,也不一定是相邻的)。如果列车连续停靠了若干分钟,那么每分钟旺仔哥哥都可以离开列车并重新进入。

\hspace{15pt}需要特别注意的是,由于旺仔哥哥的手脚很快,对于任意的一分钟内,他总是会抢先在橘望妹妹移动到相邻的一节车厢前完成他的所有行动。

\hspace{15pt}如果在某个时间点旺仔哥哥橘望妹妹碰巧在同一节车厢中,则橘望妹妹将会抓住旺仔哥哥(然后狠狠地惩罚他)。如果当列车到达终点站时仍未被抓住,旺仔哥哥就会带着橘光姐姐下车离开车站进行亲密互动,此后橘望妹妹就再也抓不到他了

\hspace{15pt}实际上,由于橘望妹妹的行动方式是固定的,旺仔哥哥总是能够知道橘望妹妹此刻的位置。旺仔哥哥想知道,如果他始终以最优方式进行行动,他是否存在一种方案,可以使得橘望妹妹始终抓不到他,并能够在终点站安全下车?

输入描述:
\hspace{15pt}输入的第一行包含四个整数 nmkd2 \le n \le 10^51 \le m, k \le nm \neq kd \in \{ 0,1 \}。它们分别表示列车中的车厢数量、旺仔哥哥橘望妹妹的初始位置,以及橘望妹妹初始时的方向(我们约定 d=0 代表方向为从车尾向车头,d=1 代表方向为从车头向车尾

\hspace{15pt}输入的第二行包含一个字符串 s1 \leqq |s| \leqq 10^5, s_i \in \{0,1\},第 i 个符号包含列车在第 i 分钟时的状态信息。数据保证该字符串的最后一个字符(此时列车到达终点站)始终为 \texttt{1}


输出描述:
\hspace{15pt}如果存在一种方案,可以使得橘望妹妹始终抓不到旺仔哥哥,使得他能够在终点站安全下车,则输出 \texttt{Yes},否则输出 \texttt{No},接着在下一行输出一个正整数,表示他在最优策略下被橘望妹妹抓到的最晚时间
示例1

输入

5 3 2 0
0001001

输出

Yes
示例2

输入

3 2 1 1
0001

输出

No
2
你们ba玩家真的是
发表于 2025-10-10 14:55:50 回复(0)