AT_abc146_f.[ABC146F] Sugoroku

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

高桥君在玩双六棋,棋盘格由用00NN编号的共N+1N+1个格子构成。每一回合,高桥君会扔一个点数11MM的骰子。如果高桥君当前在第ii格,骰子扔出kk点,高桥君就前进到第i+ki+k格。 如果此时i+k>Ni+k > N,高桥君立刻输掉。另外,棋盘上还有若干个“GameOver格”,如果高桥停在这些格子,也立刻输掉游戏。

假设高桥君可以自由控制骰子的点数,那么他从00号格子出发,到达NN号格子,最短需要多少回合?输出用最短回合到达NN格时,每回合骰子的点数组成的序列;如果无法到达NN号格子,输出-1。

输入格式

第1行,两个正整数N,MN,M

第2行,一个长为N+1N+1的字符串SSSi=0S_i=0表示第ii格是一个普通格子;Si=1S_i=1表示第ii格是一个GameOver格。

输出格式

输出用最短回合到达NN格时,每回合骰子的点数组成的序列,若有多种序列回合数都是最短,输出其中字典序最小的。

如果无法到达NN号格子,输出-1。

输入输出样例

  • 输入#1

    9 3
    0001000100

    输出#1

    1 3 2 3
  • 输入#2

    5 4
    011110

    输出#2

    -1
  • 输入#3

    6 6
    0101010

    输出#3

    6

说明/提示

1,3,2,31,3,2,3的顺序扔出骰子的点数,高桥君会经过第1,4,61,4,6格最终到达第99格。

无法在33次以内到达第99格。1,3,2,31,3,2,3是所有44次到达第99格的点数序列中,字典序最小的。

1N1051 \le N \le 10^5

1M1051 \le M \le 10^5

SS长度为N+1N+1,只由字符'0'和'1'组成,保证S0=0S_0=0SN=0S_N=0

首页