摘要:
又是一道树状数组求逆序对的题目。 这一题我们可以将第二个串中的每一个字母,与第一个串中的字母做两两匹配,令第二个串第i个字母的值id[i]为该字母与第一个串中的字母匹配到的位置。 然后考虑到所求答案为最小的移动次数,那么这个最小的移动次数显然为序列id的逆序对个数。 树状数组求一求就没了。 我一看时 阅读全文
摘要:
本来想练一下树状数组的,看到网上某人的blog后点了进来。 第一眼发现不会,出去上了个厕所发现离散化后不是一道简单前缀和题吗。 考虑到每一个人出现且仅出现一次,且出现的时间是在一个连续的区间内。 那么对于一组询问(l,r),当这个人在时刻l前消失,或者再时刻l+r后出现,那么你才会看不到。 那么我们 阅读全文
摘要:
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入$x$数2. 删除$x$数(若有多个相同的数,因只删除一个)3. 查询$x$数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为$x$的数5. 求$x$的前驱(前驱定义为小于$x$,且最大的数)6. 求$ 阅读全文
摘要:
这一题最终要构造的序列显然是一个单峰序列 首先有一个结论:一个序列通过交换相邻的元素,进行排序,最少的交换次数为该序列的逆序对个数 (该结论很久之前打表意外发现的,没想到用上了。。。。。) 考虑如何构造这个单峰序列 首先最大的数肯定是该序列的峰,余下的元素我们从大到小枚举,判断将其加入到当前序列的左 阅读全文