您的位置:首页 > 其它

zoj 2316 Matrix Multiplication

2017-04-19 12:08 281 查看
点击打开链接

题意: 

给你一个n*n的矩阵A,然后让你 求 A与 A 的转置矩阵的积。的矩阵所有元素和。

题解:

题中给的矩阵很特殊,他的转置矩阵和本身相同。

那么他们相乘其实就是, 每一行与包括自己的所有行相乘的和。

另外 x*x+y*y+2xy =(x+y)^2;

所以把每一列所有数加起来,求平方和就是答案。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main()
{
long long n,m,a,b;
long long p[205050];
int T,ca=1;
cin>>T;
while(T--){
if(ca!=1) puts("");
ca++;
scanf("%lld%lld",&n,&m);
memset(p,0,sizeof(p));
for(int i=0;i<m;i++){
scanf("%lld%lld",&a,&b);
if(a==b) p[a]++;
else{
p[a]++,p[b]++;
}
}
long long ans=0;
for(int i=0;i<205050;i++){
if(p[i])ans+=(long long)(p[i]*p[i]);
}

printf("%lld\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: