#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
typedef unsigned int u32;
inline int lowbit(int x){return x&-x;}
const int N=4096;
alignas(4096) int B[(N+5)*(N+5)];
void matrix_multiply(int n,const int *A,const int *B_,int *C){
for(int i=0;i<n;++i){
for(int j=0;j<=i;++j){
B[i*n+j]=B_[j*n+i];
B[j*n+i]=B_[i*n+j];
}
}
// for(int x=0;x<n;++x){
// for(int y=0;y<n;++y){
// u32 s0=0,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0;
// for(int j=0;j<n;j+=8){
// s0+=(u32)A[x*n+j+0]*B[y*n+j+0];
// s1+=(u32)A[x*n+j+1]*B[y*n+j+1];
// s2+=(u32)A[x*n+j+2]*B[y*n+j+2];
// s3+=(u32)A[x*n+j+3]*B[y*n+j+3];
// s4+=(u32)A[x*n+j+4]*B[y*n+j+4];
// s5+=(u32)A[x*n+j+5]*B[y*n+j+5];
// s6+=(u32)A[x*n+j+6]*B[y*n+j+6];
// s7+=(u32)A[x*n+j+7]*B[y*n+j+7];
// }
// C[x*n+y]=s0+s1+s2+s3+s4+s5+s6+s7;
// }
// }
for(int i=0,x=0,y=0;i<n*n;++i){
u32 s0=0,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0;
for(int j=0;j<n;j+=8){
s0+=(u32)A[x*n+j+0]*B[y*n+j+0];
s1+=(u32)A[x*n+j+1]*B[y*n+j+1];
s2+=(u32)A[x*n+j+2]*B[y*n+j+2];
s3+=(u32)A[x*n+j+3]*B[y*n+j+3];
s4+=(u32)A[x*n+j+4]*B[y*n+j+4];
s5+=(u32)A[x*n+j+5]*B[y*n+j+5];
s6+=(u32)A[x*n+j+6]*B[y*n+j+6];
s7+=(u32)A[x*n+j+7]*B[y*n+j+7];
}
s0+=s4;
s1+=s5;
s2+=s6;
s3+=s7;
s0+=s2;
s1+=s3;
C[x*n+y]=s0+s1;
int lo=lowbit((x&y)+1);
x&=-lo;
y&=-lo;
y^=x&lo;
x^=lo;
}
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 9.309 s | 128 MB + 40 KB | Accepted | Score: 100 | 显示更多 |