Link
Solution
弦图的最小染色,很多结论都不会证明,所以题解待填
最精华的部分大概是线性维护最大值了。
一种最值问题的解法
%%jcvb%%
Problem
一个长度为的序列,次操作,每次可以选择删除一个数字,或者把一个数字的值增大,要求实时维护最大数字的下标
Solution
显然可以用平衡树或者堆来做,但是相当大材小用,没有发挥问题的特性,复杂度也带着
思路是:设数字的值域为,那就开个桶,每个桶上挂着一个链表,表示值为的数字的下标。
修改时直接把下标插入,记录一个值表示当前已知的最大值并更新。
删除通过bool[]实现。
查询需要从开始,删掉所有被删除了的数字,如果被删空了,就,直到找到一个没有被删除的数字即是答案。
复杂度:
每次操作至多增加一个链表节点,所以链表中共插入个节点,同样删除次数也是。
每次插入,要么,要么不变,所以的增加、减少次数都是。
Code
1 | //Code by Lucida |