zoukankan      html  css  js  c++  java
  • HRBUST 1717 字典树模板

    之前写字典树虽然很熟也能变化 但是一直是到了场上再乱写 写的很长 于是准备写个短点的板子

    于是选了个水题 然而写出了1W个bug

    insert和query反而写的没什么问题..

    L c[100050] ;
    
    struct node {
        L v[2] ;
        L num[2] ;
    }a[100000 * 64];
    L tot ;
    L b[100] ;
    L f[100] ;
    node newnode() {
        node cc ;
        cc.v[0] = cc.v[1] = -1 ;
        cc.num[0] = cc.num[1] = 0 ;
        return cc ;
    }
    void init() {
        tot = 0 ;
        f[60] = 1 ;
        dow(i,59,1) {
            f[i] = f[i+1] * 2 ;
        }
        a[0] = newnode() ;
    }
    void fj(L x) {
        dow(i,60,1) {
            b[i] = x%2 ;
            x/=2 ;
        }
    }
    void inse(L z,L val) {
        fj(z) ;
        L rt = 0 ;
        rep(i,1,60) {
            L x = b[i] ;
            if(a[rt].v[x] == -1) {
                tot ++ ;
                a[rt].v[x] = tot ;
                a[tot] = newnode() ;
            }
            a[rt].num[x] += val ;
            rt = a[rt].v[x] ;
        }
    }
    L query(L z) {
        fj(z) ;
        L rt = 0 ;
        L ans = 0 ;
        rep(i,1,60) {
            L x = b[i] ;
            if(a[rt].num[x^1] > 0 && a[rt].v[x^1] != -1) {
                ans += f[i] ;
                rt = a[rt].v[x^1] ;
            }
            else {
                rt = a[rt].v[x] ;
            }
        }
        return ans ;
    }
    
    L sum[100050] ;
    
    int main () {
        L n ;
        while(scanf("%lld" , &n) != EOF) {
            init() ;
            rep(i,1,n) c[i] = read() ;
            sum[0] = 0 ;
            rep(i,1,n) {
                sum[i] = c[i] ^ sum[i-1] ;
            }
            rep(i,0,n)
                inse(sum[i],1) ;
            L res = 0 ;
            L ans = query(0) ;
            dow(i,n,1) {
                inse(sum[i],-1) ;
                res ^= c[i] ;
                ans = max(ans , query(res)) ;
            }
            printf("%lld
    " , ans) ;
        }
    }
    
  • 相关阅读:
    adb devices检测不到夜神模拟器
    adb devices检测不到夜神模拟器
    adb devices检测不到夜神模拟器
    epoll里面mmap释疑
    epoll里面mmap释疑
    epoll里面mmap释疑
    epoll里面mmap释疑
    Redis数据迁移的三个方法
    Redis数据迁移的三个方法
    MySQL:由USE DB堵塞故障引发的思考
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/7642983.html
Copyright © 2011-2022 走看看