水
已完成今日后面忘了挑战赛#26难度红橙橙橙橙橙大学习。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T1
把一个 double 数用 int() 括起来相当于向下取整,据此如果 n>=int(n+0.5) 就是该向下取整,反之向上取整。
当然也可以使用 round 函数。
时间复杂度:O(1)O(1)O(1)。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T2
贪心,如果这个数 +300≤+300\le+300≤ 升序排序后的 a[k]a[k]a[k] 显然可以,反之不行。实现方式多样。
时间复杂度:O(nlogn)O(n log n)O(nlogn)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T3
看到这种需要不停合并/分离连通块,单个连通块内有前后顺序的问题就要想到链表!
具体的,维护 l(i),r(i)l(i),r(i)l(i),r(i) 分别表示当前 iii 的前车和尾车。操作 1,21,21,2 就是 O(1)O(1)O(1) 来做,操作 333 一直往前跑到这个连通块的头部,然后往后跑即可。
时间复杂度:平均 O(n+q)O(n+q)O(n+q)。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T4
全场非语法题最水,二分板子。
时间复杂度:O((n+m)logn)O((n+m)logn)O((n+m)logn)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T5
问题本质是在有向无环图(DAG)中,从目标技能 nnn 出发,找出所有必须的前置技能。
所以栈反向搜就可以了。
时间复杂度:O(n+∑mi)O(n+\sum m_i)O(n+∑mi )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T6
如果跑广搜的话还要回来求每个格子,感觉不如 DP\tt{DP}DP。
转移易得。但要注意这个点满足能走、他上面或者左边能到达才能转移。
还有要特判起点为 # 以及和 n=m=1n=m=1n=m=1 的情况。
算上这么多细节,容易吃罚时。
时间复杂度:O(nm)O(nm)O(nm)