A

考虑一轮会删掉多少数,容易发现是n+23\lfloor \frac{n+2}{3} \rfloor

所以每一轮操作完之后nn会变成原本的23\frac{2}{3}左右,因此可知操作轮数一定很少,可以直接暴力枚举会进行几轮

考虑nn是在第几轮被删除的,由于每一轮做完后它要么在最后一个,要么已经被删除了

所以判断该轮是否被删除只需要判断当前长度n%3n\%3是否为11

时间复杂度:O(logn)O(logn)

B

看上去就比较原的一个问题

考虑贪心,你从一个位置走到下一个位置,一定会选择前面价格最低的油去买,并且买到能够正好走到下一个即可

所以从前向后扫一遍过程中记录最低价格即可

时间复杂度:O(n)O(n)

C

主要考验你模拟是不是写到了所有细节

要注意的点:

1.b+sqrt(delta)2a\frac{-b+sqrt(delta)}{2*a}不一定是较大值,要根据aa的正负来判断

2.根号部分是有理数要合并

3.答案最后是00要输出00

4.前面项不为00才需要输出中间加号

5.分母不为11才需要输出“//分母”

时间复杂度:O(TM)O(T*M)

D

由于题目需要kk的倍数时间走到终点,所以我们可以对每个点拆点建立分层图(根据最短路%k\%k的值)

又因为有时间限制,我们可以把边的权值变为1,1+K,1+2*K,... 来满足时间要求

于是这样子就变成了一个分层图跑Dijkstra的经典问题了

0 comments

No comments so far...