首页 > 奶牛异或
头像 子希
发表于 2020-10-27 22:00:53
思路:一边插入前缀异或值,一边查询之前插入的哪个数可以与当前数组成最大异或值,这样就变成了两个异或最大值问题了,不过还要求一下区间,对于插入的每个数,用一个数字记录一下他所在的地方,为什么这样是正确的呢,因为一个数异或自己等于0,前缀异或值存的是[1,i]的异或和,我们在[i,i]再找一个j与他组成 展开全文
头像 lifehappy
发表于 2020-10-26 19:58:41
奶牛异或 思路 利用前缀异或和,不断遍历加入树就行,接下来的操作就跟查找异或最大值一模一样了,无非就是在结束点标记上当前访问的是第几个数就行了。 代码 /* Author : lifehappy */ #include <bits/stdc++.h> using namespa 展开全文
头像 rk_no
发表于 2020-10-22 23:02:22
题目: 给你个数。让你找出一个连续子序列其和最大。若方案不唯一,输出右端点最左的方案,若还不唯一,输出最短的方案。 做法: 对个数求的前缀和数组。问题转化成,在中选个数,其值最大。 做法见另一篇题解:https://blog.nowcoder.net/n/e27fd9137aed443f87b4 展开全文
头像 DeNeRATe
发表于 2020-11-02 16:49:52
分析 最开始看到还以为是一个可持久化01Trie树模板题。。。结果发现好像就是持续更新一个Trie树加上查询即可由于是连续子序列,所以直接异或前缀即可时间复杂度: 代码 //Nowcoder 22998 #include <algorithm> #include <iostream 展开全文
头像 熠丶
发表于 2020-10-24 03:06:44
做法:01字典树 思路: 这一题和The XOR Largest Pair思路很像,唯一不同的是这题求的是一段连续区间的最大值,并且还要维护区间的左端点和右端点.所以我们只需存每个连续区间的右端点.并且上个区间的右端点+1即为所求区间的左端点. 代码 #include <bits/stdc 展开全文
头像 又在摸鱼的大熊猫很勤奋努力
发表于 2020-10-23 16:42:55
奶油异或 题意 让你找一个连续区间异或和最大,如果有多种方案,输出右端点最小的,如果还有多种方案,输出最短的 分析 关于异或,有这样一个性质 ,如果用 表示 的异或前缀和,那么有 ,就是说这样可以很轻松的求的一个区间的异或和所以在 字典树上,我们可以插入 的异或前缀和,结尾的时候标记一下这是 展开全文
头像 Dear㉿You
发表于 2020-11-03 19:13:45
奶牛异或 分析 先假设s [ i ] = a [ 1 ] ^ a [ 2 ] ^ ... ^ a [ i ],那么 在每次将 a [ i ] 加入树的时候,记录它的尾节点对应的是哪一个下标 代码 /* (写点什么吧...) */ #include<bits/stdc++.h> 展开全文
头像 林思艺
发表于 2020-10-24 08:43:39
题意 给你一个序列,让你找出一个连续子序列使得其异或和最大。若方案不唯一,输出右端点最左的方案,若还不唯一,输出最短的方案。 思路 同一个值异或两遍就是,所以用前缀记录从到的异或和,到异或和就是。所以答案就转化成了,求和的异或和最大。 做法 用字典树来实现记录和查找就好了。记得以此按照题目要求比较。 展开全文
头像 LB_tq
发表于 2020-10-29 19:28:41
Solution 要求选出一段子序列使得异或值最大。发现异或运算具有类似于前缀和的性质:由于 的性质,可以快速消除前缀影响。 设 为 到 的异或值,则 即为 到 的异或值。问题转化为对每个 查询使得异或值最大的 ,字典树实现即可。 需要注意的是,异或运算的优先级低于 ,判断时需要加 展开全文
头像 昵称很长很长真是太好了
发表于 2020-10-30 00:31:11
题意:让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的。 题解:01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值。我们查询当前 二进制字符串与已经插入的 二进制字符串中的哪一个异或和最大?找到最大的那个,读取这个前缀和是到谁结束的,来判断是否要更新 /* 展开全文

等你来战

查看全部