QOJ.ac

QOJ

時間限制: 10 s - 20 s 記憶體限制: 1024 MB 總分: 45

#5986. 起重机卡车

统计

你身处一个大型仓库中,有 $2^{40}$ 个存储位置排列成一个圆环。

一辆装有起重机的卡车沿着这些存储位置移动,根据程序拾取或放下板条箱。(卡车上装有无限供应的板条箱,因此它总是可以放下更多的板条箱。)

程序由以下指令序列组成:

  • b : 向后移动一个位置
  • f : 向前移动一个位置
  • u : 在当前位置拾取一个板条箱
  • d : 在当前位置放下一个板条箱
  • ( : 什么都不做
  • ) : 如果当前位置的板条箱数量多于一个,则回到指令序列中最近的一个 (,并从那里继续执行程序。(这不会移动卡车。)

程序中的 () 指令总是成对出现:一个 ( 后面总会跟着一个匹配的 )。程序中最多包含两对这样的括号,如果包含两对,它们不会嵌套——也就是说,情况只可能是:

  • 没有 () 指令;
  • 程序中某处有一个 ( 指令,后面跟着一个 ) 指令;
  • 一个 ( 指令,后面跟着一个 ) 指令,再后面跟着另一个 ( 指令,最后跟着另一个 ) 指令。

样例中包含了上述每种情况的示例。

在起重机卡车开始运行程序之前,每个存储位置最初都有一个板条箱。

神秘的是,如果卡车拾取了某个位置的最后一个板条箱,另一辆卡车会立即赶来并在那里放下 256 个板条箱!同样,如果卡车在某个位置放下了一个板条箱,使得该位置的板条箱数量达到 257 个,另一辆卡车会立即驶过并拾取 256 个板条箱,只留下一个。因此,每个位置的板条箱数量始终在 1 到 256 之间。

在程序结束之前,卡车总共会向前或向后移动多少次?

输入格式

第一行包含一个整数 $T$,表示测试用例的数量。

接下来 $T$ 行,每行包含一个长度不超过 2000 个字符的起重机卡车程序。

输出格式

输出 $T$ 行,每行格式为 "Case #$X$: $Y$",其中 $X$ 是测试用例编号,$Y$ 是卡车移动的总次数。

数据范围

$1 \le T \le 20$

$1 \le$ 程序长度 $\le 2000$

保证程序会终止。

样例

样例输入 1

4
ufffdddbbbdd
dddd(fdbu)fff
dddd(fdddddbu)f(fdddddbu)
bf

样例输出 1

Case #1: 6
Case #2: 11
Case #3: 49
Case #4: 2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.