首页 > 小美的区间异或和
头像 在刷题的单身狗很开心
发表于 2023-09-18 14:20:41
首先读懂题目,题目要求的是所有连续子数组的权值和。二权值和为数组中人选出连个数的异或之和。由于是异或运算所以对于某个数上某位二进制数为0与之前的连续区间里面能凑成多少个1取决于前面有多少少个1,还要注意的是从第一个数到这个数之间的区间也可以分成子区间,那就是说假如前一位的是1的话,那么回和前面的位异 展开全文
头像 lekkoo
发表于 2024-05-10 11:10:25
读题,可以发现题目要求的是所有的数对的xor值的贡献之和。那么这里的贡献是什么呢? 注意所有连续子数组,其实可以等价于找到两个数字,然后分别向左边和右边扩展后得到的区间,在这些区间里,我们找到的这对数字是可以为答案做出贡献的。 假设我们的数组是1-下标的,我们找到的第一个数字下标为l,第二个数字下标 展开全文
头像 以诚丶
发表于 2025-06-10 22:14:23
对于连续子数组,考虑状态定义代表了以结尾的数组的异或和。由于代表了,他是一定包括了,所以。 然后对于新出现的,可以通过例子,不妨用题目给出的例子。 对于以索引3结尾(从0开始),有如下3个连续子数组: [1,2],[3,1,2],[2,3,1,2]。 我们可以发现索引2位置异或了3次,索引1位置 展开全文
头像 影醉
发表于 2024-10-30 01:40:41
个人感觉这题不太像是面试的题目更像是算法竞赛中的题目风格,在面试题目中应该算是比较难的那档 了,感觉很多面试的题单中对于这种位运算思维的计数dp都没怎么练过。 本人是算法竞赛的选手,首先看到这题的求的计数,存在明显的递推关系,考虑定义状态dp[i]表示以i结 尾的所有连续子数组的贡献。接着我们考 展开全文
头像 Flaot
发表于 2025-04-04 11:41:30
元素a[i]对最终答案的总贡献为:a[i]在所有包含它的连续子数组中与其他元素构成的所有可能数对(a[i], a[j])的异或和。从0到n-1遍历a[i],累加每一个a[i]的贡献,就得到最终答案。遍历单个a[i]的所有包含数组需要O(n),每个数组内部计算数对异或和需要O(n^2),遍历整个a数组 展开全文

等你来战

查看全部