zoukankan      html  css  js  c++  java
  • hdu--4920--原来一直写了速度慢的矩阵乘法

    这题....tle到落泪啊

    后来 discuss里面的一个人 提供了一个链接 一下子 明白了 自己以前怎么没有注意过呢?

    传送

    然后 只要按照第二种写法 果然AC了... 虽然时间还是卡的很紧 但起码不是tle了

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 const int size = 810;
     6 int x[size][size];
     7 int y[size][size];
     8 int z[size][size];
     9 
    10 int main()
    11 {
    12     cin.sync_with_stdio(false);
    13     int n , num;
    14     while( cin >> n )
    15     {
    16         memset( z , 0 , sizeof(z) );
    17         for( int i = 0 ; i<n ; i++ )
    18         {
    19             for( int j = 0 ; j<n ; j++ )
    20             {
    21                 cin >> num;
    22                 x[i][j] = num % 3;
    23             }
    24         }
    25         for( int i = 0 ; i<n ; i++ )
    26         {
    27             for( int j = 0 ; j<n ; j++ )
    28             {
    29                 cin >> num;
    30                 y[i][j] = num % 3;
    31             }
    32         }
    33         for( int i = 0 ; i<n ; i++ )
    34         {
    35             for( int k = 0 ; k<n ; k++ )
    36             {
    37                 if( x[i][k] )
    38                 {
    39                     for( int j = 0 ; j<n ; j++ )
    40                     {
    41                         z[i][j] += x[i][k] * y[k][j];
    42                     }
    43                 }
    44             }
    45         }
    46         for( int i = 0 ; i<n ; i++ )
    47         {
    48             cout << (z[i][0]%3);
    49             for( int j = 1 ; j<n ; j++ )
    50             {
    51                 cout << " " << (z[i][j]%3) ;
    52             }
    53             cout << endl;
    54         }
    55     }
    56     return 0;
    57 }
    View Code

    这边 还有一个很重要的判断

    if( x[i][k] )

    有没有这句话 时间差了300多Ms 因为这样一下子剪枝了很多不用进入for循环了

    today:

      我遇到猫在潜水 却没遇到你

      我遇到狗在攀岩 却没遇到你

      我遇到夏天飘雪 却没遇到你

      我遇到冬天打雷 却没遇到你

      我遇到所有的不平凡

      却一直遇不到平凡的你

       

    just follow your heart
  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/radical/p/3958870.html
Copyright © 2011-2022 走看看