Home_W的位运算4

TimeLimit:2000MS  MemoryLimit:128MB
64-bit integer IO format:%I64d
Problem Description

给定一个序列 a1,a2……an

求有多少个对l,r(l<=r),满足 al ^ a(l+1) ^ a(l+2) ^…… ^ ar = s,其中^代表按位异或

Input

只有一组数据

第一行是一个整数n

接下来一行有n个整数,分别代表 a1,a2……an

再接下整数q代表查询次数

接来下来有q行,每行是一个整数代表s

其中0<n,s,ai<=10^6

q<=10

Output

对于每个s,输出有多少对l,r满足题目要求

SampleInput
4
2 2 4 1
7
1
2
3
4
5
6
7
SampleOutput
1
2
0
2
2
1
1 思路:由n的范围来确定了暴力是不能解决问题的,所以我们要预处理优化,将s[0]=0,因为0^x=x;
s[1]=s[0]^a1;
s[2]=s[1]^a2;
............
有了预处理以后,我们还要知道一点 al ^ a(l+1) ^ a(l+2) ^…… ^ ar = s则s[r]^s[l]=s;
且s[l]^s=s[r],在这个基础上我们就可以用O(n)遍历每一个s[i],且得到有多少个s[i]^s在预处理的数组里出现过;
也就是我们只要求出对每一个s[i]有几个s[r]满足s[r]^s[l]=s;
下面献上我low逼的代码
  时间:748MS   长度:275
     scanf("%I64d", &n);
for(i=; i<=n; i++)
{
scanf("%I64d", &s[i]);
s[i]=s[i]^s[i-];///预处理的关键步骤1
z[s[i]]++;///预处理的关键步骤2,且值得注意的是z[0]=1要在循环之前赋值一遍
}

预处理

scanf("%I64d", &s);
for(i=; i<=n; i++)
sum+=z[s[i]^s];
printf("%I64d\n", sum/);///因为s[l]^s=s[r],s[r]^s=s[l];所以用/2可以解决问题;

求和操作

16级第二周寒假作业E题的更多相关文章

  1. 16级第二周寒假作业H题

    快速幂(三) TimeLimit:2000MS  MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description 计算( AB ...

  2. 福建工程学院16级第一周寒假作业E题----第七集,奇思妙想

    第七集,奇思妙想                                                                                            ...

  3. 16级第一周寒假作业F题

    Subsequence TimeLimit:1000MS  MemoryLimit:65536K 64-bit integer IO format:%lld Problem Description A ...

  4. FJUT16级第一周寒假作业题解D题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P3 第八集,体能训练 TimeLimit:1000MS  MemoryLimit:128M ...

  5. FJUT16级第一周寒假作业题解J题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P9 涨姿势之区间刷新 TimeLimit:2000MS  MemoryLimit:128M ...

  6. FJUT16级第一周寒假作业题解I题

    涨姿势题3 TimeLimit:1000ms  MemoryLimit:128000KB 64-bit integer IO format:%lld Problem Description 涨姿势题就 ...

  7. FJUT16级第一周寒假作业题解G题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6 涨姿势题1 TimeLimit:1000MS  MemoryLimit:128000K ...

  8. java第二周的作业

    package java第二周学习; import javax.swing.JOptionPane; public class 数学题 { private int a; private int b; ...

  9. Machine learning 吴恩达第二周coding作业(必做题)

    1.warmUpExercise: function A = warmUpExercise() %WARMUPEXERCISE Example function in octave % A = WAR ...

随机推荐

  1. virtio 之后的数据直连

    在上一篇中说了virtio这种半虚拟化方案之后,还有一种全虚拟化的方案,这种全虚拟化的方案中,直接宿主机上的设备,直接被虚拟化成了n个设备,然后这些设备可以直接被加载进guest os中当做一个普通的 ...

  2. 【C++】构造函数不能是虚函数

    1 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的.问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没 ...

  3. Graph-Based image segmentation method

    1.Graph-Based 方法简介 基于图的图像分割方法将图像伪造成带权值无向图的形式 : G = (V, E) 其中,V是顶点集合,把图像中的每个像素或者每个区域看成图的一个顶点:E是边的集合,连 ...

  4. luogu 1360 阵容均衡(前缀和+差分+hash)

    要求一段最大的区间里每个能力的增长值是一样的. 我们首先求一遍前缀和,发现,如果区间内[l,r]每个能力的增长值是一样的话,那么前缀和[r]和[l-1]的差分也应该是一样的. 那么我们把前缀和的差分h ...

  5. 【bzoj5157】[Tjoi2014]上升子序列 树状数组

    题目描述 求一个数列本质不同的至少含有两个元素的上升子序列数目模10^9+7的结果. 题解 树状数组 傻逼题,离散化后直接使用树状数组统计即可.由于要求本质不同,因此一个数要减去它前一次出现时的贡献( ...

  6. 【loj2319】[NOIP2017]列队 Splay(卡过)

    题目描述 给出一个 $n\times m$ 的矩阵,第 $i$ 行第 $j$ 列的数为 $(i-1)\times m+j$ . 现在有 $q$ 次操作,每次操作给出位置 $(x,y)$ ,取出 $(x ...

  7. 【数据库_Mysql】<foreach>标签在Mysql中的使用

    foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.info.details.具体说明:在list和数组中是其中的对象,在map中是val ...

  8. BZOJ4888 Tjoi2017异或和(树状数组)

    化为前缀和相减.考虑每一位的贡献.则需要快速查询之前有几个数和当前数的差在第k位上为1.显然其与更高位是无关的.于是用BIT维护后k位的数的出现次数,瞎算一算即可. // luogu-judger-e ...

  9. XML格式化加载的时候提示Content is not allowed in prolog. Nested exception: Content is not allowed in prolog

    原因:原本是.xml文件格式的内容,被你用右键,文本编辑,保存,导致格式不认了. 解决方法:下载个notepad+ 工具,用这工具打开,修改,编辑,保存,即可被继续认作xml格式.

  10. HDU.1846 Brave Game (博弈论 巴什博弈)

    HDU.1846 Brave Game (博弈论 巴什博弈) 题意分析 巴什博奕裸题 博弈论快速入门 代码总览 include <bits/stdc++.h> using namespac ...