洛谷P3719 [AHOI2017初中组]rexp
题目背景
以下为不影响题意的简化版题目。
题目描述
给出一个由(,),|,a组成的序列,求化简后有多少个a。
化简规则:
1、形如aa...a|aa...a|aa...a的,化简结果为“|”两边a的个数最多的一项,例如a|aa|aaa=aaa 3、先算带括号的序列,例如(a|a)|aaa=aaa
输入格式
一行一个序列
输出格式
化简后a的个数
输入输出样例
输入 #1
aa(aa)|(aa|(a|aa))aa
输出 #1
4
说明/提示
原题的样例记不得了,只能随便写个代替了。。。
序列长度不超过100000
保证序列合法且括号内和“|”左右均非空
Solution
貌似写过这种题,类似于P1022 计算器的改良
但是我怎么感觉这比计算器要简单很多呢?
还是说我把P1022想的太复杂了?
Algorithm
在P1022中,我们可以用到分类讨论+分治的思想,但是在那道题中不是很明显吧
这道题用分治就非常好做了:
- 不需要先读入字符串
- 不需要想P1022那样存储数字
- 不需要判断那么多字符,例如=,+,-,以及隐藏的*
那么用分治的话该怎么做呢?