BUCT10月月赛题解

A-水群的ZZH

01背包裸题。

B-积木

裸的树状数组,ai范围最大到1e9,离散化一下就好了。

C-云计算

贪心,对数组r进行排序,对于每个ti,只要用lower_bound找到最小的大于等于ti的ri即可。

D-罗dalao的密码

加密的过程是一个递归的过程,每次倒置整个区间内的字符串,然后从中间切开,继续递归。
暴力模拟加密的过程时间复杂度是 O(nlog2n),这样显然是接受不了的。
但是我们很容易发现,我们每一次询问只包含一个位置,并没有要求你把整个字符串都还原,而要求一个位置的话,每一次递归的时候,我们只需要判断被一个位置是被分在了左区间还是右区间就行了,另一个区间显然是不需要处理的,因为处理了也没什么用。
这样一来,我们每次处理询问的复杂度就降到了 O(log2n),所以总的复杂度是 O(T⋅log2n)。

E-罗dalao的小电影

加时间为0和时间为L的两个端点,对开始时间进行排序(貌似按顺序不用排序?),然后只要遍历一遍,若当前点的开始时间-(前一个点的开始时间+持续时间)>=m,则答案加上这个差值/m。

F-数列

线段树的三个基本操作,时间复杂度O(nlogn)

G-Leo的简单规律题

打表找规律(是找不到的),正解是杜教的BM,线性自动推公式

H-Leo的简单数列

由于起初a都是0,所以当ai加到与bi相等答案才会+1。可以反过来想,把bi放入对应节点,维护区间最小值,当最小值减到0时就再用线段维护一个答案,使得答案+1,并且重新给该节点赋值bi。

猜你喜欢

转载自blog.csdn.net/qq_41232072/article/details/83240398