[NOIP] [模拟] NOIP2017Day1 时间复杂度

题目传送门
考场上敲完 T1 暴力直奔 T2 就去了,一直很擅长打大模拟题结果打挂了woc满心mmp……
主要用到栈结构,如果出现一个循环首,那么把它与这层的变量名压入栈内,并且统计循环层数,置变量名为不可用;如果出现一个循环尾,就将循环首弹出,置变量名为可用。
然后注意 5 种可能的循环顺序就好了……
我们记 x,y 为数字, n 意义如题。
1、 xy
如果 x>y ,是不会进入循环的!(考场这里打挂挂掉样例还没看出来),置其复杂度为 1
如果 xy ,这样算常数复杂度,继承上一层的复杂度。
2、 xn
这种情况是恒进入循环的,复杂度为上一层的 +1 ,然而如果上一层未进入循环,则仍应继承上一层的复杂度。
3、 nx
这种情况是恒不进入循环的,置其复杂度为 1
4、 nn
没想到吧,还有这种坑爹情况,算常数复杂度,继承上一层的复杂度即可。
这样就可以 A 了,然而我还是 30 滚粗 QAQ……
时间复杂度 O(tL)
Code

猜你喜欢

转载自blog.csdn.net/HeRaNO/article/details/78566310