[CF703D]Mishka and Interesting sum/[BZOJ5476]位运算 题目大意: 一个长度为\(n(n\le10^6)\)的序列\(A\).\(m(m\le10^6)\)次询问,每次询问区间\([l,r]\)中,出现次数为偶数的数的异或和. 思路: 将询问离线,按照右端点排序.从左到右加入每一个数,并在该数上一次出现的位置算上贡献.显然,若一个数出现了\(x\)次,则只有\(x-1\)次对答案有贡献.这可以用树状数组维护.时间复杂度\(\mathcal O((n+m)…
Description 前缀和(prefix sum)\(S_i=\sum_{k=1}^i a_i\). 前前缀和(preprefix sum) 则把\(S_i\)作为原序列再进行前缀和.记再次求得前缀和第i个是\(SS_i\) 给一个长度n的序列\(a_1, a_2, \cdots, a_n\)有两种操作: Modify i x:把\(a_i\)改成\(x\): Query i:查询\(SS_i\) Input 第一行给出两个整数N,M.分别表示序列长度和操作个数 接下来一行有N个数,即给定的…
题意:给定一个1e6长度的值域1e9的数组.每次给定询问,询问区间内出现偶数次的数的异或和. 题解:首先很显然,每一次询问的答案,等于这个区间所有不同元素异或和异或上区间异或和.(因为出现偶数次的对区间异或和贡献为0,此时剩下的是出现奇数次的数,在取个补集即为答案) 区间异或和前缀和就好了,那问题转化为求区间不同元素异或和.由于这个东西区间合并很困难,所以在线算法是比较不优雅的.那我们考虑离线算法.我们按询问的右端点为第一关键字排序,然后处理到目前这个右端点位置的last数组,last数组定义为…
3155: Preprefix sum 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3155 把给出的a_i当成查分数组d_i做就可以了. XJB搞一搞就过了. code: #include <iostream> #include <cstdio> using namespace std; #define int long long const int wx=200017; inline int read(){ int…
题意:给一个序列,操作1:给区间[a,b]中(i-a)%k==0的位置 i 的值都加上val  操作2:查询 i 位置的值 解法:树状数组记录更新值. 由 (i-a)%k == 0 得知 i%k == a%k,又因为k <= 10,想到建55棵树状数组,即对每个(k,x%k)都建一棵树状数组,每次更新时,在第(k,a%k)棵树状数组上更新a这个点,更新值为val,然后再b+1处更新值为-val,即在[a,b]内更新了val. 查询pos的时候,求出每一个树状数组(k,pos%k)的sum值即可.…
http://www.lydsy.com/JudgeOnline/problem.php?id=1012 树状数组原来我只懂得sum和add的操作,今天才知道可以有求区间最值的操作,我学习了一下写了个,1a了. 区间最值其实和区间求和差不多,就是将sum数组的含义转移到max,然后通过特定的区间更新max. 在区间求和中,当我们维护max[i]的时候,要找到它前面所有的max[j]来更新,在这里因为是树状数组,所以可以降成一个log级,画图可知,max[i]需要的max只有max[i-2^0],…
Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows. The area is divided into squares. The squares form an S * S matrix with the rows and columns numbered from 0 to S-1. Each square contains a base sta…
当初听郭炜老师讲时不是很懂,几个月内每次复习树状数组必看的题 树的dfs序映射在树状数组上进行单点修改,区间查询. /* 树状数组: lowbit[i] = i&-i C[i] = a[i-lowbit[i]+1]+...+a[i] 求和: 设sum[k] = a[1]+a[2]+...+a[k] 则a[i]+a[i+1]+...+a[j] = sum[j]-sum[i-1] 在树状数组上:sum[k] = C[n1]+C[n2]+...+C[k] n1 = n2-lowbit[n2]... &g…
题目链接 : https://codeforces.com/problemset/problem/961/E One day Polycarp decided to rewatch his absolute favourite episode of well-known TV series "Tufurama". He was pretty surprised when he got results only for season 7 episode 3 with his search…
Description 给你n( 1<=n<=1000000)个数,以及m(1<=m<=1000000)个询问,每个询问包括l和r,问你在这n个数中,区间l~r,出现偶数个数的数的异或和 Input 第一行一个整数 n,表示数列的长度 接下来一行 n 个非负整数,表示 a 数组中的每个元素 接下来一行一个整数 m,表示查询的数量 接下来 m 行,每行两个整数 l, r 表示这次查询区间的左右端点 Output 对于每组查询,输出一行一个整数,表示这组查询的答案 刚看到题的一瞬间,输…