题目大意:
就是给出一个数列之后进行两种操作:
1. 询问从第l个数到第r个数中的第k小的数
2. 修改某个位置的数为t
大致思路:
主席树学习第二题...
就是对原序列建立主席树然后用树状数组来维护另外一颗主席树来表示原主席树的变化
因为每次修改都会导致需要修改一整段线段树, 那么考虑用树状数组维护, 每个位置都是一颗线段树, 这些线段树的前缀和就是对应位置的变化, 在递归查询的时候考虑这些和和原主席树的和即可
代码如下:
Result : Accepted Memory : 29648 KB Time : 170 ms
/*
* Author: Gatevin
* Created Time: 2015/9/9 21:45:45
* File Name: BIT_ChairTree.cpp
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include