一、题目分析
此题本质是计算
(
W
⋅
(
Q
K
T
)
)
V
(W(QK^T))V
(W⋅(QKT))V的值。
注意任务要求:
70% 的测试数据满足:n 全部的测试数据满足:n
因此如果按照顺序计算,那么运算量超过10^9(约为1s),则会超时,因此可以在计算中合并一些运算。
二、代码展示(c)
#include
int main() {
int n,d;
int i,j;
scanf("%d%d",&n,&d);
//printf("%d %dn",n,d);
//-------------------初始化------------------服务器托管网-----
int** Q = (int**)malloc(sizeof(int*) * n);
int** K = (int**)malloc(sizeof(int*) * n);
int** V = (int**)malloc(sizeof(int*) * n);
int* W = (int*)malloc(sizeof(int*) * n);
//-------------------初始化-----------------------
for(i = 0;i
三、注意事项
此题因为存入的数很多,因此需要动态开辟二维数组。设一个二维数组为Q,方式如下:
int** Q = (int**)malloc(sizeof(int*) * n);
for(i = 0;i
边创建数组边读入会更省时间~
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net