• bzoj4260: Codechef REBXOR


    求异或maxmin一般用trie (二进制式的trie)。query中找的是满足((x>>i)&1)^A=1,那么A=((x>>i)&1)^1;maxx=max(sumx,sumi)(i=[1,x])。(YY一下异或的性质

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define REP(i,s,t) for(int i=s;i<=t;i++)
    #define dwn(i,s,t) for(int i=s;i>=t;i--)
    #define clr(x,c) memset(x,c,sizeof(x))
    int read(){
    	int x=0;char c=getchar();bool f=true;
    	while(!isdigit(c)){
    		if(c=='-') f=false;c=getchar();
    	}
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return f?x:-x;
    }
    const int nmax=400005;
    const int maxn=10000005;
    int seq[nmax],chd[maxn][2],sum[nmax],ll[nmax],rr[nmax],pt,n;
    void init(){
    	n=read();
    	REP(i,1,n) seq[i]=read();
    }
    void insert(int x){
    	int cur=0;
    	dwn(i,30,0){
    		int v=(x>>i)&1;
    		if(!chd[cur][v]) chd[cur][v]=++pt;
    		cur=chd[cur][v];
    	}
    }
    int query(int x){
    	int ans=0,cur=0;
    	dwn(i,30,0){
    		int v=((x>>i)&1)^1;
    		if(chd[cur][v]) ans|=(1<<i),cur=chd[cur][v];
    		else cur=chd[cur][v^1];
    	}
    	return ans;
    }
    void work(){
    	clr(chd,0);pt=0;insert(sum[0]=0);
    	REP(i,1,n) sum[i]=sum[i-1]^seq[i],ll[i]=max(ll[i-1],query(sum[i])),insert(sum[i]);
    	clr(chd,0);pt=0;insert(sum[n+1]=0);
    	dwn(i,n,1) sum[i]=sum[i+1]^seq[i],rr[i]=max(rr[i+1],query(sum[i])),insert(sum[i]);
    	int ans=-1;
    	REP(i,1,n-1) ans=max(ans,ll[i]+rr[i+1]);
    	printf("%d
    ",ans);
    }
    int main(){
    	init();work();return 0;
    }
    

      

    4260: Codechef REBXOR

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 497  Solved: 226
    [Submit][Status][Discuss]

    Description

    Input

    输入数据的第一行包含一个整数N,表示数组中的元素个数。
    第二行包含N个整数A1,A2,…,AN。
     
     

    Output

    输出一行包含给定表达式可能的最大值。
     

    Sample Input

    5
    1 2 3 1 2

    Sample Output

    6

    HINT

    满足条件的(l1,r1,l2,r2)有:(1,2,3,3),(1,2,4,5),(3,3,4,5)。

    对于100%的数据,2 ≤ N ≤ 4*105,0 ≤ Ai ≤ 109。

    Source

    [Submit][Status][Discuss]
  • 相关阅读:
    vector与iterator的一些用法
    动态规划 hdu 1024
    dfs bfs hdu 1045
    hdu 2795
    poj 2828
    线段树染色
    线段树比大小
    A
    ?线程局部变量
    JRE、JDK、JVM 及 JIT
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5689880.html
Copyright © 2020-2023  润新知