Warmup:Upanishad (吉林省赛) (异或的减法思维,排序预处理,后按顺序处理, 树状数组,贪心第把数往后面放)
Posted 小幻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Warmup:Upanishad (吉林省赛) (异或的减法思维,排序预处理,后按顺序处理, 树状数组,贪心第把数往后面放)相关的知识,希望对你有一定的参考价值。
思路:
- 第一眼看到这个题,就准备直接用莫队去做, 每一次l ,r 第一次遇到一个数的次数是奇数就不做处理, 之后就要^异或一下来处理, 次数是偶数本来就要处理, 就不用说了, 这样就符合题意
- 不过出题人,把莫队卡掉了
- 首先可以根据异或性质 把问题转化为
- A 通过前缀思想处理
- B通过对询问排序后处理
- 对R进行从小到大排序
- 问的是不同的元素异或和,而且我们的r是一直慢慢增大的
- 所以贪心地让数放在最右边,这样在查询 L 的时候就可以把那个数包含进去, 而且 求不同的元素, 于是只需要那个一个数就行
- 保存一个lstval所在的位置, 用于更新 val[r] 时(把元素放在右边) 删除之前的那个点,
- 此时查询和修改L,R的不同的元素异或, 利用 树状数组处理即可
以上是关于Warmup:Upanishad (吉林省赛) (异或的减法思维,排序预处理,后按顺序处理, 树状数组,贪心第把数往后面放)的主要内容,如果未能解决你的问题,请参考以下文章
第十五届吉林省赛The 15th Jilin Provincial Collegiate Programming Contest C.Random Number Generator(数学 BSGS)