专栏文章
为什么说线性基插入的时候一定要高斯消元?
未知分类 8参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio59sqt
- 此快照首次捕获于
- 2025/12/02 13:35 3 个月前
- 此快照最后确认于
- 2025/12/02 13:35 3 个月前
CPP
#include <bits/stdc++.h>
#define rep(i, a, b) for (int i = (a), i##ABRACADABRA = (b); i <= i##ABRACADABRA; i++)
#define drep(i, a, b) for (int i = (a), i##ABRACADABRA = (b); i >= i##ABRACADABRA; i--)
using namespace std;
using ll = long long;
int gb(int S,int l,int r){return (S>>l)&((1<<(r-l+1))-1);}
void sb(int&S,int l,int r,int x){S^=(gb(S,l,r)^x)<<l;}
bool ins1(int&S,int x){
drep(i,4,0)if (x>>i&1){
int h=gb(S,i*5,i*5+4);
if (h){
x^=h;
continue;
}
sb(S,i*5,i*5+4,x);
return 1;
}
return 0;
}
bool ins2(int&S,int x){
drep(i,4,0)if (x>>i&1){
int h=gb(S,i*5,i*5+4);
if (h){
x^=h;
continue;
}
drep(j,i-1,0)if (x>>j&1)x^=gb(S,j*5,j*5+4);
drep(j,4,i+1){
h=gb(S,j*5,j*5+4);
if (h>>i&1)sb(S,j*5,j*5+4,h^x);
}
sb(S,i*5,i*5+4,x);
return 1;
}
return 0;
}
int main() {
{
auto ins=ins1;
int S=0,T=0;
ins(S,31),ins(S,30),ins(S,28);
ins(T,31),ins(T,30),ins(T,29);
cout<<S<<' '<<T<<'\n';
rep(i,0,4)cout<<gb(S,i*5,i*5+4)<<" \n"[i==4];
rep(i,0,4)cout<<gb(T,i*5,i*5+4)<<" \n"[i==4];
}
{
auto ins=ins2;
int S=0,T=0;
ins(S,31),ins(S,30),ins(S,28);
ins(T,31),ins(T,30),ins(T,29);
cout<<S<<' '<<T<<'\n';
rep(i,0,4)cout<<gb(S,i*5,i*5+4)<<" \n"[i==4];
rep(i,0,4)cout<<gb(T,i*5,i*5+4)<<" \n"[i==4];
}
return 0;
}
hhhzc
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...