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. 第197天:js---caller、callee、constructor和prototype用法

    一.caller---返回函数调用者 //返回函数调用者 //caller的应用场景 主要用于察看函数本身被哪个函数调用 function fn() { //判断某函数是否被调用 if (fn.cal ...

  2. 【Python】极简单的方式序列化sqlalchemy结果集为JSON

    继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式. sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段). ...

  3. java finally 与return

    finally之外的语句块有return,finally语句块没有return:该语句块的返回值被固定下来,等fianlly执行完后返回给调用者 finally语句块与其他语句块同时有return:返 ...

  4. 【JavaScript&jQuery】轮展图

    用bootstrap实现轮展图和用Jquery自定义轮展图两种   1.使用bootstrap插件 效果图: 用一个超简单的方法,那就是用bootstrap的插件,什么?不懂bootstrap?没关系 ...

  5. MD5加密概述

    一.Note: 写到这篇文章是工作中实际遇到了,以前都听过不过没有细看.这里简单概述下,原理的话需要看看更专业的介绍了. 二.MD5简介 Message Digest Algorithm MD5(中文 ...

  6. Interviewe HDU - 3486( 暴力rmq)

    面试n个人,可以分任意组数,每组选一个,得分总和严格大于k,问最少分几组 就是暴力嘛...想到就去写吧.. #include <iostream> #include <cstdio& ...

  7. QML从文件加载组件简单示例

    QML从文件加载组件简单示例 文件目录列表: Project1.pro QT += quick CONFIG += c++ CONFIG += declarative_debug CONFIG += ...

  8. POJ.3279 Fliptile (搜索+二进制枚举+开关问题)

    POJ.3279 Fliptile (搜索+二进制枚举+开关问题) 题意分析 题意大概就是给出一个map,由01组成,每次可以选取按其中某一个位置,按此位置之后,此位置及其直接相连(上下左右)的位置( ...

  9. error 65: access violation at 0x40021000 : no 'read' permission

    http://blog.csdn.net/stephen_yu/article/details/7725247 使用MDK自己创建一个STM32F103VE核的项目 加入源码后编译,正常,在线仿真单步 ...

  10. vijos 小三学算术

    描述 小三的三分球总是很准的,但对于数学问题就完全没有想法了,他希望你来帮他解决下面的这个问题:对于给定的n,从1!.2!.3!.…….n!中至少删去几个数,才可以使剩下的数的乘积为完全平方数? 格式 ...