线性代数
dinlon
这个作者很懒,什么都没留下…
展开
-
[2021.1.26多校省选模拟9]松鼠串门(线性基/离线策略/贪心)
[2021.1.26多校省选模拟9]松鼠串门 询问树上一些父子链的最大异或和.N<=5e5 首先可以想到一个O(nlognw2)O(nlognw^2)O(nlognw2)的做法,就是倍增维护线性基,每次线性基合并是O(w2)O(w^2)O(w2) 然后对于这种父子链我们考虑让儿子继承父亲信息.然后离线询问,采取类似于区间上的离线策略,统计每一个左端点的答案,然后每次移动右端点,这样我们就能够将一些问题贪心处理,让对应贡献在最靠右的位置产生。 但是关键在于深度限制,这里有一个关键思想,就是实际上对于线性原创 2021-01-26 16:02:10 · 14 阅读 · 0 评论 -
P4719 【模板】“动态 DP“&动态树分治(矩阵/轻重链剖分/ddp)
P4719 【模板】“动态 DP”&动态树分治 求解树上最大权独立集,但是需要支持修改。 https://www.luogu.com.cn/problem/solution/P4719 首先我们可以得到一个非常简单的dp式子,然后现在考虑怎么支持修改,首先每一次修改只会影响到当前节点的祖先,然后dp需要支持修改,可以利用矩阵处理。 但是仅仅利用矩阵,需要修改的也有O(n)个矩阵,我们考虑进行轻重链剖分,然后我们维护的状态转移仅仅权值包含轻儿子,然后从重儿子状态转移,这样转移矩阵中就只包含轻儿子的权值原创 2021-01-22 22:31:51 · 108 阅读 · 0 评论 -
CF938G Shortest Path Queries(线性基/线段树分治/异或)
CF938G Shortest Path Queries 支持加边删边和查询两点之间的异或最短路,我们可以使用线段树分治,然后利用线性基求解。 但是这里图可能不是联通的,所以查询两点之间的异或和需要边带权并查集维护,然后还不能路径压缩,必须按秩合并。 不过这里这个维护异或和的时候只需要计算跟之间对应的异或就好了。 线性基是处理异或问题的手段之一 还有利用按位处理的方法处理异或问题的思路 ...原创 2021-01-18 16:03:08 · 114 阅读 · 0 评论 -
P3733 [HAOI2017]八纵八横(线性基/线段树分治)
P3733 [HAOI2017]八纵八横 这是那道线性基的加强版,现在要求从1节点出发的一条路径异或和最大,并且还要支持修改权值和加边删边。 我们可以直接线段树分治然后将所有修改用vector存下来,然后最后dfs一遍整个线段树,然后每次类似于整体二分中将修改序列移动的方式,对于覆盖整个当前节点的区间直接处理,然后对于覆盖左节点的放到左边,覆盖右节点放到右边,然后回溯的时候栈序撤销即可,每一次向线性基加入一个数只会将一个位置由0变为其他数,我们每一次将对应位置reset即可。 ...原创 2021-01-18 15:41:37 · 106 阅读 · 0 评论 -
P4151 [WC2011]最大XOR和路径(线性基)
P4151 [WC2011]最大XOR和路径 对于求解最大异或和路径,首先边可以重复走,最终的结果一定是一条路径和许多环的异或和,因为路径和环之间的边会被走两次,不会被计算,所以我们可以通过dfs树求解所有的环的线性基,然后随便找一条从1到n的路径求解最大异或和。 这是因为一条路径和一个环的异或就是另一条路径,所以我们可以通过和环异或而得到任意一条路径,所以任意的路径都是可以的。 ...原创 2021-01-18 10:11:49 · 58 阅读 · 0 评论