摘要:
首先考虑一个xor为0的子集,如果去掉一个元素,那么xor就不等于0了,从而符合题意 去掉的元素肯定最小,或者说保留的元素最大,就可以使得ans最大 所以用贪心,从大到小取,用线性基维护一下即可,这是基于xor特殊性质的贪心 阅读全文
摘要:
首先用dfs找出所有的环的权值{s},然后随便找一条1到n的路径权值v 发现v和s中的元素可以组合成任何路径的权值,然后就是线性基了 注意dfs不用加fa,因为有重边的 阅读全文
摘要:
高斯消元,可以直接消的 1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<cstring> 5 #define MAXN 45*45 6 #define For(i,x,y) for(register in 阅读全文
摘要:
千年老题,以前用枚举做,现在用高斯消元做 自由元直接做成0即可 阅读全文
摘要:
这题答案就是2^自由元的数目,原因是自由元可以取1或者0,所以就是ans<<1 由于只要求自由元的数目,所以高斯消元可以直接消后面的,不做前面的了,对答案没有影响 阅读全文
摘要:
差分约束大坑题 1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<cstring> 5 #define re register int 6 #define ll long long 7 #define MA 阅读全文
摘要:
首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复杂度大概是O(T*n*n) 1 #include<cstdio> 2 #include<cstdlib> 阅读全文
摘要:
树上差分的代码很简洁,dfs+差分即可 这题很多坑点啊,比如重边自环好坑 1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<cstring> 5 #include<vector> 6 #define pii 阅读全文
摘要:
//Kd Tree#include #include #include #include #include #define Nd Node* #define To for(int i=0;il)To A->mn[i]=min(A->mn[i],A->l->mn[i]),A->mx[i]=max(A->mx[i],A->l->mx[i]); if(A->r)To A->mn[i]=min(... 阅读全文
摘要:
#include #include #include #include #include #define MAXN 100000+10 #define Nd Node* #define pii pair #define mp make_pair #define ft first #define sc second #define pb push_back #define ll long long... 阅读全文