HDU 5968 异或密码

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

 

Problem Description - 题目描述

晨晨在纸上写了一个长度为N的非负整数序列{ai}。对于这个序列的一个连续子序列{al, al+1, …,ar}晨晨可以求出其中所有数异或的结果 al xor al + 1xor ... xor ar其 中xor表示位异或运算,对应C、C++、 Java等语言中的^运算。
小璐提出了M个询问,每个询问用一个整数 xi描述。
对于每个询问,晨晨需要找到序列{ai}的所有连续子序列,求出每个子序列异或的结果,找到所有的结果中与 xi之差的绝对值最小的一个,并告诉小璐相应子序列的长度。
若有多个满足条件的连续子序列,则告诉小璐这些子序列中最长的长度。
 
Input - 输入
包含多组测试数据,第一行一个正整数T,表示数据组数。
每组数据共两行。
第一行包含N+1个非负整数。其中第一个数为N,表示序列的长度;接下来N 个数,依次描述序列{ ai}中的每个数。
第二行包含M+1个整数。其中第一个数为M,表示询问的个数;接下来M个数 xi,每个数对应题目描述中的一个询问。
保证 1 <= N <= 100,1 <= M <= 100,ai <= 1024,|xi| <= 1024,数据组数 <= 100。
Output - 输出

对于每组数据输出M + 1行。前M行对应晨晨M个询问的回答,第M + 1行为空行
 

Sample Input - 输入样例

2
2 1 1
2 0 2
3 1 2 4
3 10 5 1

Sample Output - 输出样例

2
1 3
2
1

题解

  水题。
  枚举所有子序列的异或值,然后花式查询即可,数据比较小,不用管时间。

  输出是每组数据后面都要有额外的回车,不然会PE……

代码 C++

 #include<cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#define mx 1<<11
int data[], len[mx];
int main(){
int t, n, m, i, j, tmp, l, r;
scanf("%d", &t);
while (t--){
memset(len, , sizeof(len));
scanf("%d", &n);
for (i = ; i < n; ++i) scanf("%d", data + i);
for (i = ; i < n; ++i){
tmp = ;
for (j = i; j < n; ++j){
tmp ^= data[j];
len[tmp] = std::max(len[tmp], j - i + );
}
}
scanf("%d", &m);
for (i = ; i < m; ++i){
scanf("%d", &tmp); l = r = -;
tmp = std::max(tmp, );
for (j = tmp; j < mx; ++j) if (len[j]) break;
if (j < mx) l = j;
for (j = tmp - ; ~j; --j) if (len[j]) break;
if (~j) r = j;
if (~(l | r)){
if (abs(tmp - l) < abs(tmp - r)) printf("%d\n", len[l]);
else if (abs(tmp - l) > abs(tmp - r)) printf("%d\n", len[r]);
else printf("%d\n", std::max(len[l], len[r]));
}
else printf("%d\n", len[- * l * r]);
}
puts("");
}
return ;
}

HDU 5968 异或密码的更多相关文章

  1. HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)

    异或密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Des ...

  2. HDU 5968(异或计算 暴力)

    题意是在一个数列中找到一段连续的子串使其异或值与所给值最接近,求出子串长度,若有多组结果,输出最大长度. 做题之前一定多注意数据范围,这道题就可以直接暴力,用数组 p[ i ][ j ] 表示长度为 ...

  3. HDU5968 异或密码 —— 二分 + 边界的细节处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5968 异或密码 Time Limit: 2000/1000 MS (Java/Others)    M ...

  4. 2016年中国大学生程序设计竞赛(合肥)-重现赛1008 HDU 5968

    异或密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  5. hdu_5968_异或密码(预处理+二分)

    题目链接:hdu_5968_异或密码 题意: 中午,不解释 题解: 前缀处理一下异或值,然后上个二分查找就行了,注意是unsigned long long #include<bits/stdc+ ...

  6. [HDU5968]异或密码

    [HDU5968]异或密码 题目大意: 数据共\(T(T\le100)\)组.每组给定一个长度为\(n(n\le100)\)的非负整数序列\(A(A_i\le1024)\),\(m(m\le100)\ ...

  7. HDU 5968:异或密码(暴力)

    http://acm.hdu.edu.cn/showproblem.php?pid=5968 题意:中文题意. 思路:一开始不会做,后来发现数据范围很小,而且那个数要是连续的,所以可能把所有情况枚举出 ...

  8. 异或密码---hdu5968(CCPC合肥,二分)

     题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5968 思路:先把所有的连续异或值保存起来,排序,然后用二分找到距离x最近的那个点,判断即可:   # ...

  9. hdu 5014 异或序列

    http://acm.hdu.edu.cn/showproblem.php?pid=5014 从最大的一个数开始找能配对使他们的异或值最大的一个数 最后输出 #include <cstdio&g ...

随机推荐

  1. 关于JS嵌套点击事件的问题。

    $().click() 是点击命令$().click(function(){代码}) 是绑定click事件,并不会直接运行.所以在嵌套的时候就有可能出现重复绑定的问题.下面是使用jsonp跨站访问代码 ...

  2. MICAPS数据文件格式

    MICAPS系统的数据结构是建立在文件系统基础上的.其特点是: l  利用目录来区分不同的数据来源.要素和层次,即不同的数据来源.要素和层次的数据要放在不同的目录中.同一目录中的数据只能有时次或时效上 ...

  3. android 多媒体数据库(非原创)

    推荐文章:http://fzlihui.iteye.com/blog/1097952,http://www.cnblogs.com/pen-ink/archive/2011/06/02/2068410 ...

  4. 利用selector设置ImageButton不同状态下的背景图片

    1.自定义MyButton类 public class MyButton extends Button { //This constructormust be public MyButton(Cont ...

  5. Hiho coder 1236 2015 北京网络赛 Score

    五维偏序..一开始被吓到了,后来知道了一种BITSET分块的方法,感觉非常不错. 呆马: #include <iostream> #include <cstdio> #incl ...

  6. VM VirtualBox 安装 Android 4.3虚拟机完整教程

    大家好,今天给大家带来一篇安装安卓虚拟机的教程! 好了,现在开始我们的教程! 一.安装准备 1.Android 4.3安装镜像(文件名:android-x86-4.3-20130725.iso) 电脑 ...

  7. qt qml fuzzyPanel 毛玻璃效果

    毛玻璃效果,用qml来写代码真是简短,大爱qml:) [下载地址]http://download.csdn.net/detail/surfsky/8426641 [核心代码] Rectangle{ c ...

  8. [转]MySQL innodb buffer pool

    最近在对公司的 MySQL 服务器做性能优化, 一直对 innodb 的内存使用方式不是很清楚, 乘这机会做点总结. 在配置 MySQL 的时候, 一般都会需要设置 innodb_buffer_poo ...

  9. Linux Socket编程(不限Linux)【转】

    转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几 ...

  10. 整理单机安装RabbitMQ,留着备用

    一.安装erlang 1.安装erlang依赖: yum install build-essential openssl openssl-devel unixODBC unixODBC-devel m ...