随笔分类 - 树状数组
摘要:题目大意:给你一个1到n的排列,问是否存在一对数a,b(1≤a,b≤n,a≠b)满足a+b为偶数且(a+b)/2在a和b之间。 数据范围:n≤3×105。 xfz智商=−1系列题目 考虑到此题并没有问你存在多少对,而是是否存在,所以不要往统计
阅读全文
摘要:数据范围:n≤2×105 以下是题解:
阅读全文
摘要:题目大意:给你一个长度为n的数列ai,定义fi=∑rij=linumj。 有m个操作: 操作1:询问一个区间l,r请你求出∑ri=lfi。 操作2:将ax变成y。 此题貌似正常做都不是很好做,考虑用一些奇奇怪怪的做
阅读全文
摘要:又是一道树状数组求逆序对的题目。 这一题我们可以将第二个串中的每一个字母,与第一个串中的字母做两两匹配,令第二个串第i个字母的值id[i]为该字母与第一个串中的字母匹配到的位置。 然后考虑到所求答案为最小的移动次数,那么这个最小的移动次数显然为序列id的逆序对个数。 树状数组求一求就没了。 我一看时
阅读全文
摘要:您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求$
阅读全文
摘要:这一题最终要构造的序列显然是一个单峰序列 首先有一个结论:一个序列通过交换相邻的元素,进行排序,最少的交换次数为该序列的逆序对个数 (该结论很久之前打表意外发现的,没想到用上了。。。。。) 考虑如何构造这个单峰序列 首先最大的数肯定是该序列的峰,余下的元素我们从大到小枚举,判断将其加入到当前序列的左
阅读全文