codeforces gym 100342F Move to Front

来源:互联网 发布:数据提供商 编辑:程序博客网 时间:2024/05/31 15:18

题意:

给一个1-N的排列,给M个询问,每次问编号为x的数在数组的第几个位置,同时把编号为x的这个数提到数组的最前面。

思路:

首先我们得知道编号为x的数前面有多少个数,这个时候就是可以用树状数组来优化了,我们记录开个数组mp记录一下编号为x的数在树状数组中的位置是多少,同时每次询问的时候直接得到它在树状数组中的位置,然后又直接求和就是可以得到答案了啊,然后就是去维护一个把数提上前的操作了,采用的是树状数组最前面预留n的空间,每次提前,原来位置update -1,新的提前的位置 update +1 , 同时更新mp数组。

0 0
原创粉丝点击