P2447 [SDOI2010] 外星千足虫
高斯消元解异或方程组模板
代码
P3211 [HNOI2011]XOR和路径
考虑拆位分别计算,
f
u
f_u
fu表示 u 到 n 路径的异或 这一位为 1 的概率
方程很容易列出来, 高斯消元即可
代码
P3232 [HNOI2013] 游走
第一反应是考虑每个边的期望经过次数,但是边能够达到 n 2 n^2 n2级别,无法承受
考虑先求 f u f_u fu表示 u 点的期望经过次数,这个可以通过高斯消元解出来,然后再利用这个 f 去计算每个边的期望次数 g i = f u d u + f v d v g_i=\frac{f_u}{d_u}+\frac{f_v}{d_v} gi=dufu+dvfv
然后按照从大到小进行排序编号
P3265 [JLOI2015]装备购买
实数线性基,类似高斯消元的实现
eps不要设得太小,有点卡精度
P3812 【模板】线性基
最大子集异或和:考虑x与线性基中异或得到的最大值,贪心的处理每一位,如果异或上这个线性基的值更大就异或,否则不异或
P3857 [TJOI2008]彩灯
2^(线性基内元素个数)
P3292 [SCOI2016]幸运数字
线性基的合并是两只log的暴力合并
使用点分治来解决,每次回答经过分治重心的询问,在dfs这个树的时候求出分治重心到每个点的线性基,那么对于一个询问就是合并两个线性基
最终复杂度为两个log
P4151 [WC2011]最大XOR和路径
考虑先找到一条1-n的路径,那么对于每个支出来的环,可以直接异或上这个环的贡献,因为支出来的那部分边会被一来一回走两次,不产生贡献
也就是把所有环的权值扔进线性基,随便找一个1-n的路径去求最大异或和
为什么可以随便选一个1-n的路径?因为如果有多个1-n的路径,必然构成环,被加入到了线性基,也就是说各种情况都会被考虑到
代码