题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 解法:从大到小排序,依次贪心的添加到当前集合就可以了,需要动态维护线性基.用拟阵证明,线性基性质,线性基中任意子集异或和不为0,所以从大到小加入就好. #include <bits/stdc++.h> using namespace std; typedef long long LL; struct node{ LL a, b; node(){} bool operator<…
Pollard-Rho 模板 板题-没啥说的- 求逆元出来后如果是负的记得加回正数 CODE #include<bits/stdc++.h> using namespace std; typedef long long LL; queue<int>arr; inline LL multi(LL a, LL b, LL p) { //快速乘 LL re = a * b - (LL)((long double) a / p * b + 1e-8) * p; return re <…
Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里某个叫施密特正交化的东西--)以判断是否会和之前已经使用的矿石发生魔法抵消(线性基还是有点懵--),如果不会抵消,就贪心地选上. 关于这题贪心正确性的证明,我查到的有以下几种 拟阵(留坑) bzoj2460题解 [抄书]贪心策略的理论基础--拟阵 2007年集训队论文 刘雨辰 <对拟阵的初步研究>…
#include<cstdio> #include<algorithm> #include<cstring> #define N 80010 #define which(x) (ls[fa[(x)]]==(x)) using namespace std; int id[N],pos[N],sz[N],ls[N],rs[N],fa[N],tot,n,m,root,a[N]; ]; +sz[ls[x]]+sz[rs[x]];} int Build(int l,int r,i…