提交记录 126723


用户 题目 状态 得分 用时 内存 语言 代码长度
qwef_ mmmi4k. 测测你的整数矩阵乘法-4k Accepted 100 9.309 s 131112 KB C++ 1.43 KB
提交时间 评测时间
2026-10-12 22:05:52 2026-10-12 22:06:04
#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;
	}
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #19.309 s128 MB + 40 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2026-10-15 15:56:00 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠