bzoj#P3200. 表达式

表达式

题目描述

Tar 的第一项家庭作业是一大堆中缀表达式。他要把这些表达式写成后缀形式之后交给老师。Tar 不会做这个作业,所以他找同学要了一份答案来抄。Tar 的老师是一个近视眼,分不清连续一串的相同字符和一个字符的区别。Tar 今天感觉非常累,于是他决定偷懒,少抄几个字糊弄一下老师。请你帮他完成这个任务。

我们来做几个必要的定义。

表达式由 a ~ z 的小写字母和一些二元运算符构成,运算符可以是 a ~ z 以外的任意可见字符。

中缀表达式就是一般情况下使用的表达式,比如 ((a+h)/b)*(c+d),将运算符置于两个运算数中间(注意运算数本身可以是变量或者一个表达式,因此这是一个递归定义)。一般可以利用括号指定运算顺序。

后缀表达式的特点是把运算符置于两个运算数之后,比如和上式等价的后缀表达式是 ah+b/cd+*。后缀表达式不需要括号,严格从左到右进行计算。

另外我们假定这个表达式系统内,相同的运算符号满足结合律和交换律,具体来说:

结合律:(B*C) = (A*B)*C,写成后缀时,ABC** = AB*C*

交换律:A*B = B*A,写成后缀时,AB* = BA*

输入格式

一行字符,表示 Tar 同学的答案。以后缀表达式的形式给出。

输出格式

输出一个数字,表示 Tar 能够蒙混过关至少要写几个字。

af+b*cd**
7
xy*x*y*x*y*
3

样例说明

xy*x*y*x*y* = xxxyyy***** = (xy*),长度为 33

数据规模与约定

  • 100%100\% 的数据满足:输入长度2500\text{输入长度} \leq 2500