Warmup:Upanishad (吉林省赛) (异或的减法思维,排序预处理,后按顺序处理, 树状数组,贪心第把数往后面放)

 

 

 

思路:

  • 第一眼看到这个题,就准备直接用莫队去做, 每一次l ,r 第一次遇到一个数的次数是奇数就不做处理, 之后就要^异或一下来处理, 次数是偶数本来就要处理, 就不用说了, 这样就符合题意
  • 不过出题人,把莫队卡掉了
  • 首先可以根据异或性质 把问题转化为

 

  •  A 通过前缀思想处理
  • B通过对询问排序后处理
  • 对R进行从小到大排序
  • 问的是不同的元素异或和,而且我们的r是一直慢慢增大的
  • 所以贪心地让数放在最右边,这样在查询 L 的时候就可以把那个数包含进去, 而且 求不同的元素, 于是只需要那个一个数就行
  • 保存一个lstval所在的位置, 用于更新 val[r] 时(把元素放在右边) 删除之前的那个点, 
  • 此时查询和修改L,R的不同的元素异或, 利用 树状数组处理即可

 

posted @ 2023-03-22 23:38  VxiaohuanV  阅读(29)  评论(0编辑  收藏  举报