线性基
stduy_ing
这个作者很懒,什么都没留下…
展开
-
Gym 102920 problem J. Switches(线性基)
链接:J. Switches题意:有 n 栈 灯 , n 个开关 , 每个开关控制一些灯的状态,求对于第 i 栈灯,按下哪些开关可以使得第 i 栈灯亮,其他灯熄灭。思路:这题本质上是求从n个数中选一些数异或得到目标数。而线性基可以有以下两个性质:线性基的元素能相互异或得到原集合的元素的所有相互异或得到的值。线性基中每个元素的二进制最高位互不相同。线性基可以构造出集合中一些元素相互异或的值,所以我们求出这 n 个数的线性基,然后一位一位构造就行了,因为线性基中每一个元素的二进制最高位不同,原创 2021-10-05 20:58:25 · 226 阅读 · 0 评论 -
洛谷 P4839 P哥的桶 (线段树维护线性基)
链接:P哥的桶 题意:给你 m 个位置和 n 次操作,操作有两种类型 :操作一 : 表示在区间[l , r]中选择任意个位置,使这些位置中的数的异或和最大。操作二 : 在位置 k 加入一个数x(每个位置可以有多个数)。思路:单点修改 + 区间查询首先考虑线段树 , 异或和最大考虑线性基。我们可以用线段树的每个节点表示这个区间的线性基,在修改的时候把每个包含这个位置的区间都插入一遍这个数就好了。然后查询可以把小区间的线性基合并到大区间,再根据这个大区间的线性基求解。代码:#include<原创 2021-03-17 19:19:34 · 150 阅读 · 0 评论 -
HDU 6579 B - Operation (线性基 + 贪心)
链接: B - Operation题意:给你 n 个数和 m 次操作,操作有两种类型 :操作一 : 表示在区间[l , r]中找出任意个数,使这些数的异或和最大。操作二 : 在数组末尾插入一个数x。思路 :对于区间异或和最大的问题,首先要想到线性基。我们可以先了解一下什么是 线性基。我们可以维护一个前缀线性基 , 用val[i][j] ,表示区间[1 , i]的第 j 位线性基的值。用 pos[i][j] 表示区间[1 , i]的第 j 位线性基的位置,如果我们贪心的让pos[i][j]原创 2021-03-17 01:22:58 · 238 阅读 · 0 评论