洛谷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中,我们可以用到分类讨论+分治的思想,但是在那道题中不是很明显吧

这道题用分治就非常好做了:

  1. 不需要先读入字符串
  2. 不需要想P1022那样存储数字
  3. 不需要判断那么多字符,例如=,+,-,以及隐藏的*

那么用分治的话该怎么做呢?

05-27 04:48