社区讨论
vector矩乘被卡常?
CF718CSasha and Array参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo3cdtpa
- 此快照首次捕获于
- 2023/10/24 04:20 2 年前
- 此快照最后确认于
- 2023/10/24 04:20 2 年前
我之前的矩阵乘法模板是这样的:
CPPtypedef vector<vector<int> >Mat;
Mat NewMat(int n , int m)
{
Mat c; c.resize(n + 1);
for(int i = 0 ; i <= n ; i++)c[i].resize(m + 1);
c[0][0] = n , c[0][1] = m;
return c;
}
Mat operator + (const Mat& a , const Mat& b);
Mat operator * (const Mat& a , const Mat& b);
Mat operator ^ (Mat x , int p);
然而在这道题被卡常,一直 TLE on test 18。
由于本题矩阵很小,怀疑 vector 在开空间时花费时间较多。
然后把 vector 改成了 array,就过了。
CPPtypedef array<array<int , 3> , 3> Mat;
Mat NewMat(int n , int m)
{
Mat c;
c[0] = {n , m , 0};
c[1] = {0 , 0 , 0};
c[2] = {0 , 0 , 0};
return c;
}
Mat operator + (const Mat& a , const Mat& b);
Mat operator * (const Mat& a , const Mat& b);
Mat operator ^ (Mat x , int p);
但在【模板】矩阵快速幂 上这两种写法时间上并没有什么差别。
所以 vector 写矩阵乘法会被卡常吗?如果会,会在什么情况下?
回复
共 1 条回复,欢迎继续交流。
正在加载回复...