首页 > 最大异或和
头像 DeNeRATe
发表于 2020-11-01 21:55:42
分析 首先,我们将题目化简一下由于设Pre[]表示异或前缀和 所以我们其实只需要维护Pre[]即可每次在一定的区间内查询与当前Pre[N]异或的最大值即可由于是区间查询,并且需要动态维护所以我们可以使用类似于主席树的维护方式进行维护即可持久化01Trie树动态进行开点由于每次只会修改到个节点查询的时 展开全文
头像 林思艺
发表于 2020-10-25 10:19:51
题意 给你一个序列,让你进行次操作。操作有如下两种:1.在序列末尾添加一个数。2.求以到内的任意位置为起始,以为结尾,是的这个子序列异或和最大。 分析 可以看出这是一个可持久化Tire树,首先利用前缀和转化问题,将查询操作转化为求。如果查询没有区间限制,那么就是一个Tire树就可以。但有了区间限制就 展开全文
头像 rk_no
发表于 2020-10-23 10:17:29
题目: 给定一个非负整数序列,初始长度为。有个操作,有以下两种操作类型: :添加操作,表示在序列末尾添加一个数,序列的长度。:询问操作,你需要找到一个位置,满足,使得: 最大,输出最大是多少。 做法: 我们直接看查询操作,它是要求序列的某个后缀的和,的最大值。我们设表示序列前个数的和。则其实是要求 展开全文
头像 熠丶
发表于 2020-10-27 14:00:04
做法:可持久化01tire 思路: 令s[i] = a[1] ^ a[2] ^ … a[i-1] ^ a[i]则a[p] xor a[p+1] xor … xor a[N] xor x 相当于 s[N] ^ x ^ s[p-1]s[N] ^ x 每次可以看成一个固定值 v提前算出来, 则相当于 求 展开全文
头像 louhc
发表于 2019-08-28 13:16:13
思路 可持久化入门题.首先,如果不是区间,而是整体询问的话,我们可以直接建,从高位到低位枚举,答案的这一位能是1就为1,不然只能为0.区间询问的话其实相差不大.使用可持久化树,这样就知道每个前缀序列构成的树.还需要记录每个节点总共经过了几次.然后在两棵树上跑,这里判断是否有节点作差即可(类似于前缀和 展开全文
头像 998244353
发表于 2020-10-30 15:10:23
题意:给定一个非负整数序列,初始长度为。有个操作,有以下两种操作类型: :添加操作,表示在序列末尾添加一个数,序列的长度。 :询问操作,你需要找到一个位置,满足,使得: 最大,输出最大是多少。数据范围: 题解:可持久化模板题。记前缀异或和为:由于异或的性质,类似主席树的建树,对每个前缀建立一棵树。 展开全文