数学--线性基
fnq9999
这个作者很懒,什么都没留下…
展开
-
将一个数列分成两部分求一种分组方式使得两部分异或和的差距最小
1.贪心考虑二进制下每个数字的每一位,偶数个的话,那么就不用考虑这一位的分组,怎么分配在答案里这一位都是0 2.只考虑奇数的位,那么答案中一定是 A-B 的形式 假设A>B 那么首先另A=0,那么异或上最大的线性基,并且尽力吧现在的A的非最高位,尽力变成0,因为A和B是一种异或 A变的小的话A,B也会更接近。--->abs(A-B)更小 #include <...原创 2019-10-11 14:16:31 · 593 阅读 · 0 评论 -
2017湘潭邀请赛 C Intersection 线性基
问有多少个数可以同时被 两个集合的子集异或出来(子集包括空集) 解: 答案:求A的线性基个数+B的线性基合数-merge(A,B)的线性基的个数,这个数的2的n次方。 刚开始想到一个错误的思路,用A集合的线性基去看能不能在B的线性基中表示,但是这样是错误的。 考虑一种情况A:1,3 B:2,4 A集合中的线性基就可以是1,3 但是这两个线性基在B中都不可以被表示,显然答案错误。 ...原创 2019-10-04 22:37:47 · 146 阅读 · 0 评论 -
Codeforces 845G 线性基模板
题意:问你找到一种方案使得从1走到N上边权异或和最小。 解:先随便找到一条,1到n的异或总和,然后将图上所有换的异或和放入一个集合中秋线性基。 再把1到n的异或和在那个集合里求最小能异或出来多少。 #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn =2e5+10; c...原创 2019-10-07 10:20:54 · 170 阅读 · 0 评论