#jlabel. 2026暑假CSP-J模拟赛03-T2 程老师的试剂标签

2026暑假CSP-J模拟赛03-T2 程老师的试剂标签

时间限制:1000ms 内存限制:512MB

题目描述

程老师的试剂柜里整齐地排列着许多瓶试剂。每一瓶试剂都不是一步配成的,而是要经过好几道工艺:有的中间品要先浓缩,有的要强浓缩,有的则要加水稀释。为了记录每瓶试剂的配制过程,程老师在瓶身上贴了一张标签,标签上印着一串由三种成对标记组成的符号串。

三种成对标记分别是圆括号 ( )、方括号 [ ] 和花括号 { },各自对应一道工艺。一张标签上的串一定是合法的:每一个左标记都有唯一与之配对的右标记,成对的两个标记之间所夹的内容本身也是一张合法标签,不同种类的标记不会交叉嵌套。

程老师用"含量"来衡量一瓶试剂的有效成分总量。标签上的每一种工艺标记都对应一条含量的计算规则:

  • 浓缩工艺:一对圆括号表示把内部的中间品合并后进行浓缩。先算出这对圆括号内部各段含量之和,再把这个总和翻为 2 倍,就是这对圆括号所代表的含量。一对内部为空的圆括号 () 表示一份标准浓缩液,含量为 2。

  • 强浓缩工艺:一对方括号的作用与浓缩类似,但设备更强,这对括号的含量为内部各段含量之和的 3 倍。一对内部为空的方括号 [] 表示一份标准强浓缩液,含量为 3。

  • 稀释工艺:一对花括号表示加水稀释,这对括号的含量只有内部各段含量之和的一半。由于成品一律按整份计量,减半之后不足一份的零头会被直接舍去。一对内部为空的花括号 {} 表示一份标准稀释液,含量为 1。

如果标签上有多段内容依次并排书写、彼此互不嵌套,那么这张标签的总含量就等于各段含量分别算出之后再相加。整瓶试剂的含量就是整张标签按上述规则算出的数值。

现在程老师拿出一张标签,他想知道这瓶试剂的总含量是多少。

输入格式

一行一个字符串 ss,仅由 ( ) [ ] { } 六种字符组成,保证是一张合法标签。

输出格式

一行一个整数,表示这张标签对应的总含量。

数据范围

  • 对于 100% 的数据,2s1052 \le |s| \le 10^5,嵌套深度不超过 20,答案不超过 101810^{18}
测试点 s|s| \le 特殊性质
1~3 20
4~7 10510^5 B
8~10 A
11~14 10310^3
15~20 10510^5

特殊性质 A:串中不含花括号 { }

特殊性质 B:串中只含圆括号 ( ) 一种标记。

样例

样例 1

输入:

(){[][][]}

输出:

6

样例 2

输入:

{[()[]]}

输出:

7

样例 3

输入:

[{[]}{()[]}]

输出:

9

样例解释

样例 1:() 的含量为 2。[][][] 三段并列,含量为 3+3+3=93+3+3=9;花括号把它稀释减半、舍去零头,得到 4。总含量为 2+4=62+4=6

样例 3:{[]} 内部为 3,稀释后舍去零头为 1;{()[]} 内部为 2+3=52+3=5,稀释后舍去零头为 2。两段并列之和为 1+2=31+2=3,外层方括号强浓缩为 3×3=93\times 3=9

难度 普及
通过率 28.6%
尝试 7
已通过 2
ID
692
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-J模拟赛 第3场