当前位置:网站首页>Matrix and Gauss elimination [matrix multiplication, Gauss elimination, solving linear equations, solving determinants] the most detailed in the whole network, with examples and sister chapters of 130
Matrix and Gauss elimination [matrix multiplication, Gauss elimination, solving linear equations, solving determinants] the most detailed in the whole network, with examples and sister chapters of 130
2022-07-26 04:04:00 【Qin xiaobaa】
( Detailed explanation ) Detailed explanation of matrix fast power and construction of common transfer matrix _ Qin xiaobaa's blog -CSDN Blog _ Matrix fast power transfer matrix
Catalog
Matrix fast power Pseudo code template
Floating point Gauss elimination
Matrix multiplication
Suppose there is n The location of the , From place i To the place j By plane there is aij A choice , By train bij A choice . Ask from the place i Take the plane first, and then transfer to the train to j Number of alternatives

Matrix multiplication
hypothesis A=(aij),B=(bij) Are the two n Meta matrix , Their product C=AB Also a n Meta matrix C=(cij),
Satisfy cij=
Matrix fast power Pseudo code template
const int N=505;
void matpow()
{
int ans[N][N];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans[i][j]=(i==j);
while(pow)
{
if(pow&1)
matmul(ans,base,ans);
matmul(base,base,base);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=ans[i][j];
}
}
}
Example 1
| Magic Gems |

That's ok Column
Consider succession

base Matrix is the key to fast power , Inheritance also has certain skills
set up F[n] = base* F[n-1] be
n-m=1 when n-1=m
F[n]= base ^n-m * F(m)
among F Array m That's ok base Array m That's ok *m Column ·
# include<cstdio>
# include<algorithm>
# include<iostream>
# include<map>
# include<cstring>
# include<set>
# include<algorithm>
# include<vector>
# include<queue>
# include<cstring>
using namespace std;
# define mod 1000000007
typedef long long int ll;
ll f[110][110],base[110][110];
ll n,m;
void mul(ll a[110][110],ll b[110][110])
{
ll c[110][110]= {0};
for(int i=1; i<=m; i++)
{
for(int j=1; j<=m; j++)
{
for(int k=1; k<=m; k++)
{
c[i][j]=(c[i][j]+a[i][k]*b[k][j]%mod)%mod;
}
}
}
for(int i=1; i<=m; i++)
{
for(int j=1; j<=m; j++)
{
a[i][j]=c[i][j]%mod;
}
}
}
ll ans[110][110];
int main ()
{
cin>>n>>m;
base[1][1]=1;
base[1][m]=1;
for(int i=2; i<=m; i++)
{
base[i][i-1]=1;
}
f[1][1]=2;
for(int i=2; i<=m; i++)
{
f[i][1]=1;
}
ll pow=n-m;
if(pow<=0)
{
if(pow<0)
cout<<1;
else
cout<<2;
return 0;
}
for(int i=1; i<=m; i++)
{
ans[i][i]=1;
}
while(pow)
{
if(pow&1)
mul(ans,base);
pow>>=1;
mul(base,base);
}
ll an=0;
for(int i=1;i<=m;i++)
{
an=(an+ans[1][i]*f[i][1]%mod)%mod;
}
cout<<an;
return 0;
}Example 2
| Checkerboard coloring |
We use it 1 For white ,0 For black . The left and right squares cannot be white at the same time & After the operation , It must be 0 , Two columns cannot be all black, that is, two columns cannot be all 0
among base The transfer rule of array is ,i,j Not both 0, And ij& After the operation, it cannot be 1
in addition base Array of pow Should be n-1
# include<cstdio>
# include<algorithm>
# include<iostream>
# include<map>
# include<cstring>
# include<set>
# include<algorithm>
# include<vector>
# include<queue>
# include<cstring>
using namespace std;
# define mod 1000000007
typedef long long int ll;
ll base[50][50],n,m;
ll f[50][50];
ll ans[50][50];
void cheng(ll a[50][50],ll b[50][50])
{
ll temp[50][50]={0};
for(int i=0;i<(1<<m);i++)
{
for(int j=0;j<(1<<m);j++)
{
for(int k=0;k<(1<<m);k++)
{
temp[i][j]=(temp[i][j]+a[i][k]*b[k][j]%mod)%mod;
}
}
}
for(int i=0;i<(1<<m);i++)
{
for(int j=0;j<(1<<m);j++)
{
a[i][j]=temp[i][j];
}
}
}
int main ()
{
cin>>m>>n;
for(int i=0;i<(1<<m);i++)
{
for(int j=0;j<(1<<m);j++)
{
if(i&j)
continue;
if(!i&&!j)
continue;
base[i][j]=1;
}
}
ll pow=n-1;
for(int i=0;i<(1<<m);i++)
{
ans[i][i]=1;
f[i][1]=1;
}
while(pow)
{
if(pow&1)
cheng(ans,base);
pow>>=1;
cheng(base,base);
}
ll an=0;
for(int i=0;i<(1<<m);i++)
{
for(int j=0;j<(1<<m);j++)
{
an=(an+ans[i][j]*f[j][1]%mod)%mod;
}
}
cout<<an;
return 0;
}
Example 3
| Sasha and Array |
First , The transfer equation of Fibonacci sequence

I have to mention a rule here , That's it base Array of x Power base[1][1] Is precisely f(x-1)
such as 0 The identity matrix of power base[1][1]=1=f(1)
1 The next power base[1][1]=f(2)
2 The next power base[1][1]=f(3)
The breakthrough point of this topic is here .
Each interval modification is realized by segment tree , How to define the practical meaning of line segment tree ?
First, let's look at two operations about [L,R] In the interval a[i] add x, operation
about 【L,R] Sum the Fibonacci sequence in the interval
The effect of the first operation on the second operation is Every time add x, It's equivalent to f[i] Corresponding base The matrix is idempotent +x, That is, multiply by an idempotent to x Of base matrix
Then we segment the tree sum How to define an array ? our lazy How to define tags
First of all, we cannot preprocess 10^9 So big Fibonacci series , It means that we sum Arrays cannot be simple numbers , It should be in matrix form .
and sum Array corresponds to This interval base Sum of arrays . Such rationality lies in [L,R] Multiply all matrices between x individual base matrix , What you get base[1][1] The sum of the , And add the matrix first , cube x individual base The results of the matrix are the same
When returning the answer , Just do it base[1][1] Sum of
Involving overloaded operators , There are many code details
# include<iostream>
# include<cstring>
# include<vector>
# include<math.h>
# include<algorithm>
using namespace std;
# define mod 1000000007
typedef long long int ll;
struct MAT
{
ll mat[3][3]={0};
void init()
{
mat[1][1]=mat[2][2]=1;
mat[1][2]=mat[2][1]=0;// This line must have , If you don't, you will be wrong , The reason why I'm wrong , Because init Not only to bear 0 The matrix is initialized to 0 The task of power matrix also undertakes the task of power reduction
}
}sum[100000*4+10],lazy[100000*4+10];
MAT operator*(MAT a, MAT b)
{
MAT c;
memset(c.mat,0,sizeof(c.mat));
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
for(int k=1;k<=2;k++)
{
c.mat[i][j]=(c.mat[i][j]+a.mat[i][k]*b.mat[k][j]%mod)%mod;
}
}
}
return c;
}
MAT operator+ (MAT a, MAT b)
{
MAT c;
memset(c.mat,0,sizeof(c.mat));
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
c.mat[i][j]=(a.mat[i][j]+b.mat[i][j])%mod;
}
}
return c;
}
MAT quickpow(ll pow)
{
MAT c;
c.init();
MAT base;
base.mat[1][1]=base.mat[1][2]=base.mat[2][1]=1;
base.mat[2][2]=0;
while(pow)
{
if(pow&1)
c=c*base;
pow>>=1;
base=base*base;
}
return c;
}
void pushup(int rt)
{
sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void pushdown(int rt) // The downward transmission of lazy marks is actually the accumulation of power levels , Power accumulation is achieved by multiplication
{
sum[rt<<1]=sum[rt<<1]*lazy[rt];
sum[rt<<1|1]=sum[rt<<1|1]*lazy[rt];
lazy[rt<<1]=lazy[rt<<1]*lazy[rt];
lazy[rt<<1|1]=lazy[rt<<1|1]*lazy[rt];
lazy[rt].init(); // Power zero
}
void build(int l,int r,int rt)
{
sum[rt].init();
lazy[rt].init();
if(l==r)
{
ll x;
cin>>x;
sum[rt]=quickpow(x-1); //f(x) by x-1 The power of base Array
return ;
}
int mid=(l+r)>>1;
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
pushup(rt);
}
void change(int L,int R,int l,int r,int rt,MAT x) // Add the matrix block to the interval
{
if(L<=l&&r<=R)
{
lazy[rt]=lazy[rt]*x;
sum[rt]=sum[rt]*x;
return;
}
pushdown(rt);
int mid=(l+r)>>1;
if(L<=mid)
change(L,R,l,mid,rt<<1,x);
if(R>mid)
change(L,R,mid+1,r,rt<<1|1,x);
pushup(rt);
}
ll getsum(int L,int R,int l,int r,int rt)
{
if(L<=l&&r<=R)
{
return sum[rt].mat[1][1]%mod;
}
pushdown(rt);
int mid=(l+r)>>1;
ll ans=0;
if(L<=mid)
ans=(ans+getsum(L,R,l,mid,rt<<1))%mod;
if(R>mid)
ans=(ans+getsum(L,R,mid+1,r,rt<<1|1))%mod;
return ans;
}
int main ()
{
int n,m;
cin>>n>>m;
build(1,n,1);
while(m--)
{
int a;
cin>>a;
if(a==1)
{
ll l,r,x;
cin>>l>>r>>x;
MAT y=quickpow(x);
change(l,r,1,n,1,y);
}
else
{
int l,r;
cin>>l>>r;
cout<<getsum(l,r,1,n,1)<<'\n';
}
}
return 0;
}
Example 4
| Interval plus interval sin and |
According to the formula


And easy to find , Add a, Then according to the formula sin And ask first sin The sum is then calculated according to the formula sin The result is the same
Therefore, we can use the segment tree to solve . The lazy mark is added a, The download method of lazy tag needs to follow the formula
# include<iostream>
# include<cstring>
# include<vector>
# include<math.h>
# include<algorithm>
using namespace std;
# define mod 1000000007
typedef long long int ll;
double sumsin[200000*4+10],sumcos[200000*4+10],lazy[200000*4+10];
/*
sin(a+x) = sina cosx + sinx cosa
cos(a+x) =cosa cosx -sina sinx
*/
void pushup(int rt)
{
sumcos[rt]=sumcos[rt<<1]+sumcos[rt<<1|1];
sumsin[rt]=sumsin[rt<<1]+sumsin[rt<<1|1];
}
void push(double la,int rt)
{
double temsin=sumsin[rt];
double temcos=sumcos[rt];
sumsin[rt]=sin(la)*temcos+cos(la)*temsin;
sumcos[rt]=temcos*cos(la)-sin(la)*temsin;
}
void pushdown(int rt)
{
if(lazy[rt]) // Download
{
push(lazy[rt],rt<<1);
push(lazy[rt],rt<<1|1);
lazy[rt<<1]+=lazy[rt];
lazy[rt<<1|1]+=lazy[rt];
lazy[rt]=0;
}
}
void build(int l,int r,int rt)
{
if(l==r)
{
double x;
cin>>x;
sumsin[rt]=sin(x);
sumcos[rt]=cos(x);
return ;
}
int mid=(l+r)>>1;
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
pushup(rt);
}
void change(int L,int R,int l,int r,int rt,double x)
{
if(L<=l&&r<=R)
{
push(x,rt);
lazy[rt]+=x;
return ;
}
int mid=(l+r)>>1;
pushdown(rt);
if(L<=mid)
change(L,R,l,mid,rt<<1,x);
if(R>mid)
change(L,R,mid+1,r,rt<<1|1,x);
pushup(rt);
}
double querysum(int L,int R,int l,int r,int rt)
{
if(L<=l&&r<=R)
{
return sumsin[rt];
}
int mid=(l+r)>>1;
pushdown(rt);
double ans=0;
if(L<=mid)
ans+=querysum(L,R,l,mid,rt<<1);
if(R>mid)
ans+=querysum(L,R,mid+1,r,rt<<1|1);
return ans;
}
int main ()
{
int n;
cin>>n;
build(1,n,1);
int t;
cin>>t;
while(t--)
{
int a;
cin>>a;
if(a==1)
{
int l,r,x;
cin>>l>>r>>x;
change(l,r,1,n,1,x);
}
else
{
int l,r;
cin>>l>>r;
cout<<querysum(l,r,1,n,1)<<endl;
}
}
return 0;
}
Gauss elimination
For the application of linear algebra in computer coding .
The common form is to solve System of linear equations
ax+by+cz= A
dx+ey+fz=B
gx+hy+iz=C
Find out x,y,z
Noun coefficient matrix
Augmented matrix

The linear equations can be solved by Gauss elimination
There are four common types of Gaussian elimination Integer solution , Floating point solution , Take model , XOR type .
Shaping Gaussian elimination
int a[50][50];
int x[50];
int gcd(int x,int y)
{
return !x?x:gcd(y,x%y);
}
int lcm(int x,int y)
{
return x/gcd(x,y)*y;
}
int Gauss(int hang,int lie)
{
for(int i=0;i<=lie;i++)
{
x[i]=0;
}
int row=0,col=0;
for(row=0;row<hang&&col<lie;col++,row++)
{
int maxrow=row;
for(int i=row+1;i<hang;i++)
{
if(abs(a[i][col])>abs(a[maxrow][col]))
maxrow=i;
}
if(maxrow!=row)
{
for(int j=col;j<=lie;j++)
{
swap(a[row][j],a[maxrow][j]);
}
}
if(a[row][col]==0)
{
row--;
continue;
}
for(int i=row+1;i<hang;i++)
{
if(a[i][col]!=0)
{
int LCM=lcm(abs(a[i][col]),abs(a[row][col]));
int ta=LCM/abs(a[i][col]);
int tb=LCM/abs(a[row][col]);
if(a[i][col]*a[row][col]<0)
tb=-tb;
for(int j=col;j<=lie;j++)
{
a[i][j]=a[i][j]*ta-a[row][j]*tb;
}
}
}
}
for(int i=row;i<hang;i++)
{
if(a[i][col])
return -1; // unsolvable
}
int temp=hang-row;
if(row<hang)
return temp; // Free element
for(int i=hang-1;i>=0;i--)
{
int temp=a[i][lie];
for(int j=i+1;j<lie;j++)
{
if(a[i][j])
{
temp-=a[i][j]*x[j]; // The bank j Column coefficients and j Explain
}
}
if(temp%a[i][i])
return -2; // There is a solution but no integer solution
x[i]=temp/a[i][i];
}
return 0;
}Floating point Gauss elimination
Example
Example 【 Templates 】 Gauss elimination - Luogu
Details are EPS Set up
# include<iostream>
# include<cstring>
# include<vector>
# include<iomanip>
# include<queue>
# include<set>
# include<math.h>
# include<algorithm>
using namespace std;
# define mod 998244353
typedef __int128 ll;
double a[110][110];
double x[110];
bool check(double x)
{
return fabs(x)>1e-6;
}
int Gauss(int hang,int lie)
{
for(int i=0;i<=lie;i++)
{
x[i]=0;
}
int row=0,col=0;
for(row=0;row<hang&&col<lie;col++,row++)
{
int maxrow=row;
for(int i=row+1;i<hang;i++)
{
if(fabs(a[i][col])>fabs(a[maxrow][col]))
maxrow=i;
}
if(maxrow!=row)
{
for(int j=col;j<=lie;j++)
{
swap(a[row][j],a[maxrow][j]);
}
}
if(!check(a[row][col]))
{
row--;
continue;
}
for(int i=row+1;i<hang;i++)
{
if(check(a[i][col]))
{
double ji=a[i][col]/a[row][col];
for(int j=col;j<=lie;j++)
{
a[i][j]-=a[row][j]*ji;
}
a[i][col]=0;
}
}
}
for(int i=row;i<hang;i++)
{
if(check(a[i][col]))
return -1; // unsolvable
}
int temp=hang-row;
if(row<hang)
return temp; // Free element
for(int i=hang-1;i>=0;i--)
{
double tem=a[i][lie];
for(int j=i+1;j<lie;j++)
{
if(a[i][j])
{
tem-=a[i][j]*x[j]; // The bank j Column coefficients and j Explain
}
}
x[i]=tem/a[i][i];
}
return 0;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
for(int j=0;j<=n;j++)
{
cin>>a[i][j];
}
}
if(Gauss(n,n))
{
cout<<"No Solution";
}
else
{
for(int i=0;i<n;i++)
{
cout<<fixed<<setprecision(2)<<x[i]<<endl;
}
}
return 0;
}
Modular Gaussian elimination
int a[100][100];
int x[100];
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
int gauss(int hang,int lie)
{
for(int i=0;i<=lie;i++)
{
x[i]=0;
}
int col=0,row=0;
for(row=0;row<hang&&col<lie;row++,col++)
{
int maxrow=row;
for(int i=row+1;i<hang;i++)
{
if(abs(a[i][col])>abs(a[maxrow][col]))
maxrow=i;
}
if(maxrow!=row)
{
for(int j=col;j<=lie;j++)
{
swap(a[row][j],a[maxrow][j]);
}
}
if(a[row][col]==0)
{
row--;
continue;
}
for(int i=row+1;i<hang;i++)
{
if(a[i][col]!=0)
{
int lc=lcm(abs(a[i][col]),abs(a[row][col]));
int ta=lc/abs(a[i][col]);
int tb=lc/abs(a[row][col]);
if(a[i][col]*a[row][col]<0)
tb=-tb;
for(int j=col;j<=lie;j++)
{
a[i][j]=((a[i][j]*ta-a[row][j]*tb)%mod+mod)%mod;
}
}
}
}
for(int i=row;i<hang;i++)
{
if(a[i][col])
return -1;
}
int temp=hang-row;
if(row<hang)
return temp;
for(int i=hang-1;i>=0;i--)
{
int temp=a[i][lie];
for(int j=i+1;j<lie;j++)
{
if(a[i][j])
{
temp-=a[i][j]*x[j];
temp=(temp%mod+mod)%mod;
}
}
while(temp%a[i][i])
{
temp+=mod;
}
x[i]=(temp/a[i][i])%mod;
}
return 0;
}XOR Gaussian elimination
Generally, the coefficient matrix is 01, The solution set obtained is also 01 In the form of
int a[100][100];
int x[100];
int gauss(int hang,int lie)
{
for(int i=0;i<=lie;i++)
{
x[i]=0;
}
int col=0,row=0;
for(row=0;row<hang&&col<lie;row++,col++)
{
int maxrow=row;
for(int i=row+1;i<hang;i++)
{
if(abs(a[i][col])>abs(a[maxrow][col]))
maxrow=i;
}
if(maxrow!=row)
{
for(int j=col;j<=lie;j++)
{
swap(a[row][j],a[maxrow][j]);
}
}
if(a[row][col]==0)
{
row--;
continue;
}
for(int i=row+1;i<hang;i++)
{
if(a[i][col])
{
for(int j=col;j<=lie;j++)
{
a[i][j]^=a[row][j];
}
}
}
}
for(int i=row;i<hang;i++)
{
if(a[i][col])
return -1;
}
int temp=hang-row;
if(row<hang)
return temp;
for(int i=hang-1;i>=0;i--)
{
x[i]=a[i][lie];
for(int j=i+1;j<lie;j++)
{
x[i]^=(a[i][j]&&x[j]);
}
// After XOR x[i]==(a[i][i]&&x[i]) If it is 1, that x[i] Must be 1, If it is 0, Then we should analyze it according to the meaning of the topic
}
return 0;
}Example
| EXTENDED LIGHTS OUT |
Typical examples , Switch light problem
With 3*3 For example, a lamp , Study the first lamp
L1 ^ ( A(1,1)&&X(1) ) ^ ( A(1,2)&&X(2) ) ^.....( A(1,9)&&X(9) ) =0
L Is the initial state A(x,y) by The first y Whether the switch of the lamp is right x This lamp has an effect X Whether this light is pressed
The XOR result is 0 In order to ensure that the first stop light is off
And we have XOR on the left L1
( A(1,1)&&X(1) ) ^ ( A(1,2)&&X(2) ) ^.....( A(1,9)&&X(9) ) =L1
Treat the rest similarly 8 Lights , With A Is the coefficient matrix ,(A,L) To augment the matrix , Find out X that will do
# include<iostream>
# include<cstring>
# include<vector>
# include<iomanip>
# include<queue>
# include<set>
# include<math.h>
# include<algorithm>
using namespace std;
# define mod 998244353
typedef __int128 ll;
int getid(int x,int y)
{
return x*6+y;
}
int a[50][50];
int x[50];
int gauss(int hang,int lie)
{
for(int i=0;i<=lie;i++)
{
x[i]=0;
}
int row=0,col=0;
for(row=0;row<hang&&col<lie;row++,col++)
{
int maxrow=row;
for(int i=row+1;i<hang;i++)
{
if(a[i][col]>a[maxrow][col])
{
maxrow=i;
}
}
if(maxrow!=row)
{
for(int j=col;j<=lie;j++)
{
swap(a[row][j],a[maxrow][j]);
}
}
if(a[row][col]==0)
{
row--;
continue;
}
for(int i=row+1;i<hang;i++)
{
if(a[i][col])
{
for(int j=col;j<=lie;j++)
{
a[i][j]^=a[row][j];
}
}
}
}
for(int i=hang-1;i>=0;i--)
{
x[i]=a[i][lie];
for(int j=i+1;j<lie;j++)
{
x[i]^=(a[i][j]&&x[j]);
}
}
return 0;
}
int main()
{
int t;
cin>>t;
int cnt=1;
while(t--)
{
memset(a,0,sizeof(a));
for(int i=0; i<30; i++)
{
cin>>a[i][30];
}
for(int i=0; i<5; i++)
{
for(int j=0; j<6; j++)
{
int t=i*6+j;
a[t][t]=1;
if(i>0)
a[(i-1)*6+j][t]=1;
if(i<4)
a[(i+1)*6+j][t]=1;
if(j>0)
a[i*6+j-1][t]=1;
if(j<5)
a[i*6+j+1][t]=1;
}
}
gauss(30,30);
int mo=5;
cout<<"PUZZLE #"<<cnt<<endl;
for(int i=0;i<30;i++)
{
cout<<x[i]<<" ";
if(i&&i%mo==0)
{
cout<<endl;
mo+=6;
}
}
cnt++;
}
return 0;
}边栏推荐
- (translation) timing of website flow chart and user flow chart
- Kbpc1510-asemi large chip 15A rectifier bridge kbpc1510
- 构建关系抽取的动词源
- 【读书笔记->数据分析】BDA教材《数据分析》书籍介绍
- Uniapp pit filling Tour
- What are the differences between vite and wenpack?
- E-commerce operator Xiaobai, how to get started quickly and learn data analysis?
- If you want to do a good job in software testing, you can first understand ast, SCA and penetration testing
- [cloud native] talk about the understanding of the old message middleware ActiveMQ
- Pits encountered by sdl2 OpenGL
猜你喜欢
![[Reading Notes - > data analysis] 01 introduction to data analysis](/img/50/622878bf649e77d5a4fa9732fa6f92.png)
[Reading Notes - > data analysis] 01 introduction to data analysis

Moco V2: further upgrade of Moco series

What is the problem of the time series database that has been developed for 5 years?

Lua and go mixed call debugging records support cross platform (implemented through C and luajit)

1311_硬件设计_ICT概念、应用以及优缺点学习小结

Chapter 18: explore the wonders of the mean in the 2-bit a~b system, specify the 3x+1 conversion process of integers, specify an interval to verify the angular Valley conjecture, explore the number of

KBPC1510-ASEMI大芯片15A整流桥KBPC1510

Dracoo Master天龙卡牌大师

General test case writing specification

Overview of wavelet packet transform methods
随机推荐
在 Istio 服务网格内连接外部 MySQL 数据库
2021 CIKM |GF-VAE: A Flow-based Variational Autoencoder for Molecule Generation
2022 Hangzhou Electric Multi school bowcraft
zkEVM:MINA的CEO对zkEVM和L1相关内容的总结
Six years of automated testing from scratch, I don't regret turning development to testing
JS Base64 encoding and decoding
Leetcode: 102. Sequence traversal of binary tree
Acwing第 61 场周赛【完结】
Can't the container run? The Internet doesn't have to carry the blame
苹果在其产品中拿掉了最后一颗Intel芯片
基本折线图:最直观呈现数据的趋势和变化
Redis如何实现持久化?详细讲解AOF触发机制及其优缺点,带你快速掌握AOF
redux
容器跑不动?网络可不背锅
Save the image with gaussdb (for redis), and the recommended business can easily reduce the cost by 60%
Basic principles of iptables
Overview of wavelet packet transform methods
[in depth study of 4g/5g/6g topic-42]: urllc-13 - in depth interpretation of 3GPP urllc related protocols, specifications and technical principles -7-low delay technology-1-subcarrier spacing expansio
Dat of deep learning
JS upload avatar (you can understand it after reading it, trust me)