线性基模板
- 插入
- 第
小 - 排名
- 最大异或和
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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】