[R57B] BearName

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 模拟

数据规模:1n,m2×1051 \le n, m \le 2 \times 10^50xm0 \le x \le m

思路

用变量 x 记录熊大当前所在的跑道,按顺序模拟每一个操作:

  • L:尝试向左移动一格,若 x > 0x -= 1,否则留在第 00 条跑道;
  • R:尝试向右移动一格,若 x < mx += 1,否则留在第 mm 条跑道。

操作结束后输出 x 即可。题目保证输入合法,不需要额外处理。

复杂度:时间 O(n)O(n),空间 O(1)O(1)

仓颉实现

import std.env.*
import std.convert.*

main(): Int64 {
    let reader = getStdIn()
    let a = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p: String => Int64.parse(p) })
    let m = a[1]
    var x = a[2]
    let s = reader.readln().getOrThrow()
    for (ch in s.toRuneArray()) {
        if (ch == r'L') {
            if (x > 0) {
                x -= 1
            }
        } else if (x < m) {
            x += 1
        }
    }
    println(x)
    return 0
}