Related
In following contests:
本题的本质是求执行过程中,同时嵌套的有效 O(n) 循环的最大层数。
一层循环若执行 n 次,相当于在当前复杂度上乘一个 n。例如当前复杂度为 ncur,再进入一层执行 n 次的循环后,复杂度变为 ncur×n=ncur+1,所以令 cur+1;常数次循环只乘一个常数,不影响指数。若某层循环一次也不执行,则它内部的代码也不会执行,因此这些内部循环都不能产生复杂度贡献。
由于 END 总是结束最近的 FOR,使用栈模拟循环嵌套。维护 cur 表示当前有效的 O(n) 循环层数,ans 表示最大的 cur,bad 表示当前处于多少层不执行的循环中。
栈中用 3 种状态表示当前 FOR:
某巡检平台用脚本扫描数据。脚本有 L 行,每行是下面两种之一(单词、变量、常数之间以空格分隔):
FOR x a b:进入一层循环,循环变量为小写字母 x,下界 a、上界 b 均为闭区间。a、b 各自要么是正整数,要么是规模符号 n。END:退出最近一层尚未退出的 FOR循环。规模 n 视为正无穷大,大于脚本里出现的任何正整数。
一层循环是否执行,以及它对复杂度的贡献,按下面规则判断(若某一外层循环不执行,则它内部的所有语句均不会执行,对复杂度不产生贡献):
In following contests:
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册