100 atcoder#ABC283D. [ABC283D] Scope
[ABC283D] Scope
题目描述
英小文字、(、) からなる文字列のうち、以下の手順によって空文字列になるものを良い文字列と呼びます:
- まず、英小文字をすべて削除する。
- 次に、連続する
()が存在する限り、それを削除する。
例えば、((a)ba) は英小文字をすべて削除すると (()) となり、 文字目と 文字目に連続する () を削除すると () となり、最終的に空文字列にすることができるので良い文字列です。
良い文字列 が与えられます。 の 文字目を で表します。
各英小文字 a , b , , z に対して、その文字が書かれたボールが つあります。 また、空の箱があります。
高橋君は に対してこの順に気を失わない限り操作を行います。
- が英小文字ならば、その英小文字が書かれたボールを箱に入れる。ただし、そのボールがすでに箱に入っている場合、高橋君は気を失う。
- が
(ならば、何もしない。 - が
)ならば、 未満の整数 であって、 の 番目から 番目までの文字からなる文字列が良い文字列となる最大の整数 を取る。(このような整数 は必ず存在することが証明できる。) 番目から 番目までの操作で箱に入れたボールをすべて、箱から取り出す。
高橋君が気を失わずに一連の操作を完了させられるか判定してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
高橋君が気を失わずに一連の操作を完了させられる場合は Yes を、そうでない場合は No を出力せよ。
题目大意
假设有一个字符串,只包含 (,)和小写字母。如果通过以下步骤,能使字符串为空,则称这个字符串为好的:
- 删除所有小写字母
- 不停地删除连续的
()
给定一个好的字符串 。字符串中所有的小写字母对应一个小球。此外,我们有一个箱子。
一个人按照 的顺序取球:
- 如果 为
(,什么也不做。 - 如果 为小写字母,就将这个小球放入箱子中。如果这个小球已经出现在箱子中,他会晕倒。
- 如果 为
),取小于 的最大的 ,使 这个子串是好的。将 到 操作中放入的小球全部取出。
在这个过程中,如果他晕倒了,输出No。否则输出Yes。
((a)ba)
Yes
(a(ba))
No
(((())))
Yes
abca
No
提示
制約
- は良い文字列
Sample Explanation 1
のとき、高橋君は何もしません。 のとき、高橋君は何もしません。 のとき、高橋君は a の書かれたボールを箱の中に入れます。 のとき、 未満の整数 であって、 の 番目から 番目までの文字からなる文字列が良い文字列となる最大の整数は であるため、高橋君は a の書かれたボールを箱から取り出します。 のとき、高橋君は b の書かれたボールを箱の中に入れます。 のとき、高橋君は a の書かれたボールを箱の中に入れます。 のとき、 未満の整数 であって、 の 番目から 番目までの文字からなる文字列が良い文字列となる最大の整数は であるため、高橋君は a の書かれたボールと b の書かれたボールを箱から取り出します。 したがってこの場合の答えは Yes となります。
Sample Explanation 2
のとき、高橋君は何もしません。 のとき、高橋君は a の書かれたボールを箱の中に入れます。 のとき、高橋君は何もしません。 のとき、高橋君は b の書かれたボールを箱の中に入れます。 のとき、a の書かれたボールはすでに箱に入っているため、高橋君は気を失い、これ以降の操作は行われません。 したがってこの場合の答えは No となります。