【TJOI2017】异或和】的更多相关文章

[BZOJ4888][TJOI2017]异或和(树状数组) 题面 BZOJ 洛谷 题解 考虑每个位置上的答案,分类讨论这一位是否存在一,值域树状数组维护即可. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<vector> using na…
[bzoj4888]: [Tjoi2017]异或和 题目大意:给定一个序列,求这个序列所有的连续和的异或值.(n<=1e5 ai<=1e6) 想了各种奇怪的方法就是不会做啊啊啊.. Orz 参考了一下http://www.cnblogs.com/xiejiadong/p/6815269.html才会做的.. 恩因为不超过20位..所以可以考虑枚举所有连续和在第i位1的个数 预处理完前缀和就可以O(1)求出任意一个连续和.. 当考虑到第i位的时候,把前缀和扫一遍 当扫到第x个前缀和sum[x],…
Portal Description 给出一个\(n(n\leq10^5)\)的序列\(\{a_n\}(\Sigma a_i\leq10^6)\),求该数列所有连续和的异或和. Solution 线段树/树状数组. 首先做出前缀和\(p\),然后按位考虑答案上的值.考虑\(2^k\)这一位,有多少个连续和\([i,j]\)在\(2^k\)位为\(1\).我们发现,\(x\)在\(2^k\)位上为\(1⇔x \bmod 2^{k+1}\in[2^k,2^{k+1}-1]\).那么对于每一个\(j\…
题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的.所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的 简单.但今天小明遇到了一个序列和的难题,这个题目不仅要求你快速的求出所有的连续和,还要快速的求出这些连续和的异或值.小明很快的就求出了所有的连续 和,但是小明要考考你,在不告诉连续和的情况下,让你快速求是序列所有连续和的异或值. 输入输出格式 输入格式: 第一行输入一个n,表示这序列的数序列 第二行输入n个数字a1,a2...an代表这个序列 0<…
BZOJ 洛谷 \(Description\) 求所有区间和的异或和. \(n\leq 10^5,\ \sum a_i\leq 10^6\). \(Solution\) 这样的题还是要先考虑按位做. 记\(s_i\)表示前缀和(\(s_0\)=0).假设当前是第\(k\)位,我们要统计区间和在第\(k\)位为\(1\)的区间有多少个(或是奇偶性). 枚举区间右端点\(i\),然后我们要统计有多少个\(s_i-s_j\)在第\(k\)位为\(1\). 当\(s_i\)第\(k\)位为\(1\)时:…
传送门 题意:给出一个长度为$N$的非负整数序列,求其中所有连续区间的区间和的异或值.$N \leq 10^5$,所有元素之和$\leq 10^6$ 设序列的前缀和为$s_i$,特殊地,$s_0=0$ 因为最后答案是一个异或值,所以我们考虑按位计算答案,也就是计算所有区间和中某一位上的$1$的个数. 考虑区间$[j+1,i]$在第$t$位上是否产生贡献,假设$s_i$的第$0$到$t-1$位的数字为$x$,$s_j$的第$0$到$t-1$位的数字为$y$,分类讨论: ①如果$s_i$的第$t$位…
题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的.所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的简单.但今天小明遇到了一个序列和的难题,这个题目不仅要求你快速的求出所有的连续和,还要快速的求出这些连续和的异或值.小明很快的就求出了所有的连续和,但是小明要考考你,在不告诉连续和的情况下,让你快速求是序列所有连续和的异或值. 输入输出格式 输入格式: 第一行输入一个n,表示这序列的数序列 第二行输入n个数字a1,a2...an代表这个序列 0<=a…
这道题挺神仙的,毕竟这个异或是需要进位的 看到区间和我们很自然的就想到了前缀和 于是处理一下前缀和答案就变成了这个样子 \[⊕\sum_{i=1}^n\sum_{j=1}^{i}pre_i-pre_{j-1}\] 众所周知异或是应该按位处理的,但是这里是减法,所以还有进位需要处理 瞬间就感觉没有办法处理了 但是还是应该按位处理的,我们应该按位考虑这一位上最后的答案是什么 非常显然的一点是我们在考虑某一位的时候并不需要顾忌更靠前的位置,只需要考虑后面的位置就好了 所以我们按位考虑每一位的答案,用一…
题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的.所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的简单.但今天小明遇到了一个序列和的难题,这个题目不仅要求你快速的求出所有的连续和,还要快速的求出这些连续和的异或值.小明很快的就求出了所有的连续和,但是小明要考考你,在不告诉连续和的情况下,让你快速求是序列所有连续和的异或值. 输入输出格式 输入格式: 第一行输入一个n,表示这序列的数序列 第二行输入n个数字a1,a2...an代表这个序列 0<=a…
题目链接 BZOJ4888 题解 要求所有连续异或和,转化为任意两个前缀和相减 要求最后的异或和,转化为求每一位\(1\)的出现次数 所以我们只需要对每一个\(i\)快速求出\(sum[i] - sum[j] \quad [j < i]\)当前位的\(1\)的个数 显然是将前\(i\)个数放到某一个数据结构中查询 我的思路到这里停住 两个数相减,要第\(b\)位为\(1\),我们放到具体情境中观察: 假若\(sum[i]\)的第\(b\)位为\(1\) ....1.... ....?.... 1…