zoukankan      html  css  js  c++  java
  • [HDU5968]异或密码

    [HDU5968]异或密码

    题目大意:

    数据共(T(Tle100))组。每组给定一个长度为(n(nle100))的非负整数序列(A(A_ile1024))(m(mle100))个询问,每个询问包含一个整数(x_i(|x_i|le1024))。求该序列的子区间异或和与(x_i)接近程度值最小的区间长度;若有多个区间的异或和与(x_i)的接近程度值相同,则回答最长的区间长度。

    思路:

    求前缀异或和之后暴力枚举区间端点即可。

    源代码:

    #include<cstdio>
    #include<cctype>
    #include<climits>
    #include<algorithm>
    inline int getint() {
    	register char ch;
    	register bool neg=false;
    	while(!isdigit(ch=getchar())) neg|=ch=='-';
    	register int x=ch^'0';
    	while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
    	return neg?-x:x;
    }
    const int N=101;
    int a[N];
    int main() {
    	for(register int T=getint();T;T--) {
    		const int n=getint();
    		for(register int i=1;i<=n;i++) {
    			a[i]=a[i-1]^getint();
    		}
    		const int m=getint();
    		for(register int i=0;i<m;i++) {
    			const int x=getint();
    			int min=INT_MAX,len;
    			for(register int i=1;i<=n;i++) {
    				for(register int j=0;j<i;j++) {
    					if(std::abs((a[i]^a[j])-x)<min) {
    						min=std::abs((a[i]^a[j])-x);
    						len=INT_MIN;
    					}
    					if(std::abs((a[i]^a[j])-x)==min) {
    						len=std::max(len,i-j);
    					}
    				}
    			}
    			printf("%d
    ",len);
    		}
    		puts("");
    	}
    	return 0;
    }
    
  • 相关阅读:
    Golang中使用set
    go 删除数组元素
    golang slice 简单排序
    WSGI 配置禁止反向DNS查找
    OpenStack Restful API框架介绍
    kubebuilder controller 资料学习
    package controllerutil
    JavaWeb开发好资料
    Hibernate3.6中文手册
    软件项目版本号的命名规则及格式
  • 原文地址:https://www.cnblogs.com/skylee03/p/9812442.html
Copyright © 2011-2022 走看看