- 插入
- 第 \(k\) 小
- 排名
- 最大异或和
struct basis
{
vector<ll>s;
void insert(ll val)
{
for(int x:s)val=min(val,val^x);
for(int &x:s)x=min(x,x^val);
if(val)s.push_back(val);
}
ll kth(ll k)
{
sort(s.begin(),s.end());
if(s.size()<n)k--;
ll res=0;
for(ll x:s)
{
if(k&1)res^=x;
k>>=1;
}
return !k?res:-1;
}
ll rk(ll val)
{
sort(s.begin(),s.end());
ll res=0;
for(int i=0;i<s.size();i++)
if((val^s[i])<val)res|=1ll<<i;
return res+1;
}
ll mx(ll val)
{
sort(s.begin(),s.end(),greater<ll>());
for(ll x:s)val=max(val,(val^x));
return val;
}
}S;
标签:sort,end,val,int,res,ll,线性,模板
From: https://www.cnblogs.com/Zwb0106/p/Template-Basis.html