Problem Description
晨晨在纸上写了一个长度为N的非负整数序列{ai}。对于这个序列的一个连续子序列{al,al+1,…,ar}晨晨可以求出其中所有数异或的结果 alxoral+1xor...xorar其 中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
Source
2016年中国大学生程序设计竞赛(合肥)-重现赛(感谢安徽大学)
#include<bits/stdc++.h>
using namespace std;
#define ll long longconst int inf = 0x3f3f3f3f;
const int mod = 1000000007;
const int maxn = 10000 + 8;int t, n, m, a[100 + 8], x[100 + 8], sum[1000 + 8], res[1000 + 8][1000 + 8];int main()
{scanf("%d", &t);while(t--){scanf("%d", &n);memset(sum, 0, sizeof(sum));for(int i = 1; i <= n; i++){scanf("%d", &a[i]);sum[i] = sum[i - 1] ^ a[i];}for(int i = 1; i <= n; i++)for(int j = i; j <= n; j++)res[i][j] = sum[j] ^ sum[i - 1];///区间[i, j]的所有数值的异或值scanf("%d", &m);for(int i = 0; i < m; i++){int miao = 1e9, id = 0, x;scanf("%d", &x);for(int j = 1; j <= n; j++)for(int k = j; k <= n; k++)if(miao > abs(res[j][k] - x)){miao = abs(res[j][k] - x);id = k - j + 1;}else if(miao == abs(res[j][k] - x))id = max(id, k - j + 1);printf("%d\n", id);}printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/RootVount/p/11581414.html

HDU 5968 异或密码(区间dp)相关推荐

  1. HDU 2476 String painter (区间DP)

    题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...

  2. hdu 4597 + uva 10891(一类区间dp)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...

  3. hdu 5151 Sit sit sit(区间dp+排列组合)

    题目链接:hdu 5151 Sit sit sit 题意: 一共有并排N个椅子, N个学生依次去坐,同时满足3个条件就不能坐下去: 1,该椅子不在最左,不在最右. 2,该椅子左右都有人坐了. 3,左右 ...

  4. HDU 5115 Dire Wolf ——(区间DP)

    比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: 1 #i ...

  5. HDU 5151 Sit sit sit 区间DP + 排列组合

    Sit sit sit 问题描述 在一个XX大学中有NN张椅子排成一排,椅子上都没有人,每张椅子都有颜色,分别为蓝色或者红色. 接下来依次来了NN个学生,标号依次为1,2,3,...,N. 对于每个学 ...

  6. hdu 5151 Sit sit sit(区间dp)

    题意: 给出一排座位现在要让所有学生入座,每个座位都有颜色,0表示蓝色,1表示红色,但是如果同时满足以下条件学生就不会坐下这个位置: 1.座位的左右都有座位 2.座位的左右都有人坐下了 3.座位的左右 ...

  7. HDU 5115 Dire Wolf 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...

  8. HDU 5693 D Game 区间dp

    D Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5693 Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它 ...

  9. HDU 5693:D Game(区间DP)

    D Game Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub ...

最新文章

  1. boost::pointee用法的测试程序
  2. 压缩比13为什么建议用92的油_92号和95号汽油,哪个更耐烧?车主:欢迎入坑
  3. pikachu安装以及安装时遇到的的问题——pikachu数据库链接不上config.inc.php 以及侧边栏访问没有反应,只有URL加了个#原因和解决办法
  4. Angular动态创建组件
  5. 阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误
  6. 培生同意以3亿美元出售华尔街英语
  7. c#获取带有汉字的字符串长度
  8. 中公教育python培训讲师面试题_中公教育面试经验
  9. 配置RADIUS服务器
  10. putty以及psftp的基本操作,使用方法等
  11. 佳能Canon imageCLASS MF210 Series 打印机驱动
  12. 嵌入式系统基础——Unbuntu的初步使用
  13. 编译调试 chromium/v8
  14. 【PS】ps基础绘画球体
  15. 简单使用循环打印菱形小星星
  16. Geany的所有主题文件
  17. 文笔很差系列1 - 也谈谈AlphaGo
  18. Android各国语言对照表
  19. 看图学习VMWare以及常见问题答疑(转)
  20. LIVE555流媒体服务器MKV文件点播分析

热门文章

  1. 第三章:Creating Utilities--27.增加一个本地词典
  2. SPOJ 375 query on a tree 树链剖分
  3. WPF Tile=” 变量 UI 双向绑定”x:Class=Problem/
  4. 网站架构相关PPT、文章整理
  5. COM编程入门---转发
  6. Vue项目中的初始化
  7. Yii 数据库重连告别General error: 2006 MySQL server has gone away
  8. adult道具项目开发 - 模式
  9. 使用Lingobit Localizer汉化.net程序(Translate .net program using Lingobit Localizer)
  10. pymysql的安装