HDU 5968 异或密码(模拟水题)
来源:互联网 发布:学c语言多久可以写爬虫 编辑:程序博客网 时间:2024/06/05 15:40
Problem Description
晨晨在纸上写了一个长度为N的非负整数序列{ai }。对于这个序列的一个连续子序列{al,al+1,…,ar }晨晨可以求出其中所有数异或的结果 alxoral+1xor...xorar 其 中xor表示位异或运算,对应C、C++、 Java等语言中的^运算。
小璐提出了M个询问,每个询问用一个整数xi 描述。
对于每个询问,晨晨需要找到序列{ai }的所有连续子序列,求出每个子序列异或的结果,找到所有的结果中与 xi 之差的绝对值最小的一个,并告诉小璐相应子序列的长度。
若有多个满足条件的连续子序列,则告诉小璐这些子序列中最长的长度。
小璐提出了M个询问,每个询问用一个整数
对于每个询问,晨晨需要找到序列{
若有多个满足条件的连续子序列,则告诉小璐这些子序列中最长的长度。
Input
包含多组测试数据,第一行一个正整数T,表示数据组数。
每组数据共两行。
第一行包含N+1个非负整数。其中第一个数为N,表示序列的长度;接下来N 个数,依次描述序列{ai }中的每个数。
第二行包含M+1个整数。其中第一个数为M,表示询问的个数;接下来M个数xi ,每个数对应题目描述中的一个询问。
保证 1 <= N <= 100,1 <= M <= 100,ai <= 1024,|xi | <= 1024,数据组数 <= 100。
每组数据共两行。
第一行包含N+1个非负整数。其中第一个数为N,表示序列的长度;接下来N 个数,依次描述序列{
第二行包含M+1个整数。其中第一个数为M,表示询问的个数;接下来M个数
保证 1 <= N <= 100,1 <= M <= 100,
Output
对于每组数据输出M + 1行。前M行对应晨晨M个询问的回答,第M + 1行为空行
Sample Input
22 1 12 0 23 1 2 43 10 5 1
Sample Output
21321
因为n和m都很小,所以直接预处理每一段区间的异或和存下来扫一遍即可
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int maxn = 105;int cnt[maxn][maxn], a[maxn];int main(){ int t, n, m, x; scanf("%d", &t); while(t--) { memset(cnt, 0, sizeof(cnt)); scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) for(int j = i; j <= n; j++) for(int k = i; k <= j; k++) cnt[i][j] ^= a[k]; scanf("%d", &m); while(m--) { int min1 = 0x3ffff, ans = -1; scanf("%d", &x); for(int i = 1; i <= n; i++) for(int j = i; j <= n; j++) { if(abs(cnt[i][j]-x) == min1) { ans = max(j-i+1, ans); } if(abs(cnt[i][j]-x) < min1) { min1 = abs(cnt[i][j]-x); ans = j-i+1; } } printf("%d\n", ans); } printf("\n"); } return 0;}
1 0
- HDU 5968 异或密码(模拟水题)
- HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)
- HDU 5968 异或密码
- HDU 5968 异或密码
- HDU 5968 异或密码
- HDU 5968异或密码
- HDU 5968 异或密码
- HDU 5968 异或密码
- HDU 5968:异或密码
- HDU异或密码
- 2016 ccpc HDU 5968 异或密码
- HDU— 5968 异或密码
- HDU 1287 破译密码 异或运算
- hdu 5968 异或密码 2016ACM/CCPC合肥赛区现场赛H
- [ACM] hdu 1035 Robot Motion (模拟或DFS)
- [ACM] hdu 1035 Robot Motion (模拟或DFS)
- HDU-1005 Number Sequence(矩阵快速幂或模拟)
- hdu 5968(异或前缀)
- 第三十七讲项目4.1——大奖赛计分
- Android 实现底部弹出对话框效果
- 冒泡排序
- Two-Stream Convolutional Networks for Action Recognition in Videos
- odroid x/x2 镜像地址 支持的系统
- HDU 5968 异或密码(模拟水题)
- 关于二级指针 二维数组(还没有很懂 持续更新)
- 浙工大15新生赛 数星座
- Linux计划任务
- shell排序
- impala分析函数,开窗函数
- Eclipse中如何清除EGit记住的GitHub用户名和密码
- 手机号码格式化输入工具 PhoneNumberFormatUtils
- log4j2找不到路径名${web:rootDir}