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

6 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值