A. 矩阵乘法

    Type: Default 1000~8000ms 256MiB

矩阵乘法

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

Description

  矩阵乘法是一种常用的运算,但它的优化是一个复杂的问题,在保证计算结果正确的情况下,请你尽可能地优化它的执行速度。

  本题的得分将由如下公式计算:

$$score = p^{1.1} \times q^{1.1} \times r^{1.1} / (time \times 100) $$

  其中,p,q,rp, q, r 为两个二维矩阵的大小(p×q,q×rp \times q, q \times r),timetime 为你实现的矩阵乘法运算的运行毫秒数。

Format

  你的程序 不需要也不要 进行输入输出,只需要补充如下代码中函数的内容,后直接提交即可。

#include "Matrix.h"


void MatrixMult::mult() {
    // 请在此处完成你的代码
}

Notes

  注意,两个矩阵的数据分别存储在 Ap×qA_{p \times q}Bq×rB_{q \times r} 中,请将你的结果写入 C。

  例如,访问 A 中第 i 行第 j 列的数据:

A[i][j]

  同时,可以通过 p, q, r 三个变量访问矩阵的大小。

  附:A, B, C 的类型为 vector<vector<int>>

  给出 baseline 如下

#include "Matrix.h"

void MatrixMult::mult() {
    for (int i = 0; i < p; ++i) {
        for (int j = 0; j < r; ++j) {
            C[i][j] = 0;
            for (int k = 0; k < q; ++k) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
}

  提供一组输入用于自测,如果出现了 0 WA 说明没有通过正确性检测

2 3 3
22 75 26
45 72 81
47 29 97
2 75 25
82 84 17
3316 8447 4451
8901 13509 7542

  提示:对于 小规模 的矩阵使用复杂的策略,可能会起到反效果。

【挑战1】 Matlab 从入门到精通

Not Attended
Status
Done
Rule
IOI
Problem
1
Start at
2024-9-28 15:00
End at
2024-12-20 23:00
Duration
2000 hour(s)
Host
Partic.
25