下午 cf
A
到!
B
签到题,考场还是写挂了,今天码力差。
挂在while动指针的时候没有判右边界,似。唐诗程度不亚于数组开小。
C1
猜出来结论是第一次出现需要按照一开始的顺序就能过。
C2
把一开始的排列映射到[1, n]。
修改时用set动态维护每个数第一次出现的位置。
把第一次出现位置的序列也开一个set维护,那么最终要满足的条件就是在这个总的set中是单调递增的。
如何维护单调递增:因为是单点修改,可以维护set中满足s[i] < s[next(i)]的数对个数,个数为n-1时就是递增。
这个trick应该会挺泛用的。
几个实现上的注意点:
调用前驱/后继的时候让迭代器自增/自减会很麻烦,写起来不知道到底动到哪了。
可以调用函数prev()、next()。这样迭代器自己不会动。
因为执行序列中不一定每个数都会出现,一开始可以往后面插一个[1, n]防止set越界。
我实际写出来很难看就是了。怎么大家都写那么好看/kel。
标签:2024.10,set,迭代,训练,记录,递增,next,维护 From: https://www.cnblogs.com/docxjun/p/18449461