zoukankan      html  css  js  c++  java
  • bzoj 3261: 最大异或和

    题意:

    给定一个非负整数序列 {a},初始长度为 N。       
    有   M个操作,有以下两种操作类型:
    1 、A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1。
    2 、Q l r x:询问操作,你需要找到一个位置 p,满足 l<=p<=r,使得:
    a[p] xor a[p+1] xor ... xor a[N] xor x 最大,输出最大是多少。

    n<=1e5,a[i]<=1e7

    题解:

    http://www.cnblogs.com/yinwuxiao/p/8025535.html

    和这题的思路基本一致,越前面的位对其影响越大,所以从前到后考虑

    其次,在查找的时候其实就类似于字符串的匹配,所以用trie树

    由于修改操作的出现,应考虑可持久化trie

    即与zkw线段树一样第一维维护前x个节点的前缀和,第二维维护字符串

    而每次查询时,只需查询两个前缀相减是否大于0,判断该字符串是否存在

    而修改时只需新建节点,在变动的整条链上++

    代码:

  • 相关阅读:
    JSP(一)
    设计模式之UML类图
    Servle原理
    Servlet 浅谈(三)
    Servlet 浅谈(二)
    Servlet 浅谈(一)
    闲聊
    设计模式之装饰器模式
    struts2源码调试环境的搭建
    Github学习
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8025695.html
Copyright © 2011-2022 走看看