P6103 [EER2] 直接自然溢出啥事没有

发布时间 2023-10-19 19:13:37作者: 御坂夏铃

\(0,1,2,3,4\) 分别表示「程序片段」「语句」「语句块」「函数」「值」,把它们之间的转移关系画出来如下图:

首先整个图可以看做一个 \(0\to 2\to 1\) 的环,这三步是必经的。

因为空串是「程序片段」,所以 \(1\to 0\) 这一步从整体上看是把若干个「语句」接起来,每次套上一个大括号。

因为大括号只有 \(0\to 2\) 这一步有,所以无需考虑外部算重的问题,只需考虑合成「语句」的过程是否会算重。

\(2\to 1\) 显然不会算重,因为 \(2\to 3\to 4\to 1\) 会强制加上一些东西。而 \(2\to 3\)\(4\to 1\) 也都是强制性的,并且 \(2\to 3\) 的东西是加在左边的,\(3\to 4\) 加小括号的情况是加在右边的,\(4\to 1\) 的分号是独一无二的,也都不会算重。所以唯一会算重的地方就是在 \(3\) 那里自己嵌套了一些小括号,然后不加任何东西\(4\),又嵌套了一些小括号。

注意单独一个分号也是语句,所以要把长度为 \(0\)\(1\) 的都初始化好。