摘要:
【题意】 求异或和第k小的值 【分析】 我们首先需要进行一下对线性基的处理 对于每个p[i],从i+1到max考虑贡献 如果p[j]的第i位为1,那么把p[j]异或上p[i] 接着判断无解的情况 剩下的就是从高位枚举,如果要求的k的二进制第i位为1,那么就把ans异或上p[i] 【代码】 #incl 阅读全文
摘要:
【题意】 给定n个矿石,有价值和编号,求一个选择的矿石集合,使其中不存在一个子集的异或和为0,求这个集合的价值最大 【分析】 我们可以贪心的考虑, 如果当前存在x^y^z=0,那么意味着我们肯定要舍去一个,一定会舍去价值最小的那个 所以我们可以按照价值排序,加入线性基,直到无法加入为止 【代码】 # 阅读全文
摘要:
【题意】 给定n个开关,每个开关可以控制一些灯,开始时灯全部是灭的,问通过按动开关,最多有多少种不同的灯的状态 【分析】 把每个开关看成二进制数,加入线性基,由于线性基异或的结果都不相同,所以我们只需要计算出线性基元素个数cnt,答案就是(1<<cnt) 【代码】 #include<bits/std 阅读全文
摘要:
【题意】 给出一个无向图,有边权,求可以重复走的路径的最大的异或和 【分析】 考虑一个链上出现了一个枝杈挂着一个环,那么枝杈上的边会被走两次,贡献为0,而环上的边却全部能取到 所以我们dfs一次把所有环上的异或和放入线性基 然后随意取一条1-n的链,作为初始值,询问线性基构成的最大异或和即可 至于为 阅读全文