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