先初始化一个大小为 n+2n + 2n+2 的数组 tree
然后更新树状数组中的值
每次更新时,idx 会加上 idx & -idx,直到 idx 超过 size
最坏情况下,idx 要遍历到 size
然后查询前缀和
每次查询时,idx 会减去 idx & -idx,直到 idx 小于等于 0
最坏情况下,idx 要遍历到 1
找第 k 个元素的位置,随后用二分查找的方法,通过位掩码来定位位置
然后用正则表达式提取字符串中的所有整数
将数组格式化为特定字符串格式
读取输入并分割成数据列表
初始化 B 数组和 bit 对象
遍历 arr 进行更新和查询操作
初始化 A 数组和 bit 对象
遍历 arr 进行更新和查找操作
对于类型 'A' 和 'B',主操作都基于 BIT 类的 update, query, 和 find_kth,这些方法的时间复杂度都是 O(logN)O(log N)O(logN)
所以整体时间复杂度为O(NlogN)O(N log N)O(NlogN)
题解: