• [bzoj2396]神奇的矩阵


    再随机生成一个n*1的矩阵D,若$A*B=C$,则显然有$A*B*D=C*D$,根据结合律,又有$A*(B*D)=C*D$
    由于(n*n)*(n*1)的复杂度是$o(n^2)$的,因此暴力乘法即可
    (程序的做法是判断乘起来的矩阵所有数字之和与C是否相同,即求$a[i][k]*b[k][j]$,对a的每一列预处理求和,然后就可以快速计算

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,x,s[1005];
     4 long long ans;
     5 int main(){
     6     while (scanf("%d",&n)!=EOF){
     7         memset(s,0,sizeof(s));
     8         ans=0;
     9         for(int i=1;i<=n;i++)
    10             for(int j=1;j<=n;j++){
    11                 scanf("%d",&x);
    12                 s[j]+=x;
    13             }
    14         for(int i=1;i<=n;i++)
    15             for(int j=1;j<=n;j++){
    16                 scanf("%d",&x);
    17                 ans+=x*s[i];
    18             }
    19         for(int i=1;i<=n;i++)
    20             for(int j=1;j<=n;j++){
    21                 scanf("%d",&x);
    22                 ans-=x;
    23             }
    24         if (ans)printf("No
    ");
    25         else printf("Yes
    ");
    26     }
    27 }
    View Code
  • 相关阅读:
    div弹出层
    经典SQL语句
    sql连接及操作
    给flash加上连接
    在c#中图片原比例缩放
    悬浮提示筐
    拖动板块
    IFrame自适应高度
    SQL语句中的日期计算
    注意Request.Cookies["UserID"]的用法
  • 原文地址:https://www.cnblogs.com/PYWBKTDA/p/11869511.html
Copyright © 2020-2023  润新知