hdu 2807 矩陣比較 floyd

2021-06-22 05:37:35 字數 1954 閱讀 6359

題意還是比較好理解的,即如果矩陣a、b、c滿足a*b=c,則代表矩陣a的第i個城市與代表矩陣b的第j個城市之間存在通路。。。

orz。。。然後我就按一般的矩陣相等的條件去判斷。。。結果tle了。。。2000ms+了。。。

然後就學了一下矩陣的優化。。。優化後。。。60ms。。orz。。。

一開始的**:

1 #include2

const

int n=100;3

const

int inf=10000000;4

using

namespace

std;56

intedge[n][n];

7int

n,m;

8struct

matrix;

11matrix matrix[n],m;

1213 matrix calculate(const

int &p,const

int &q)

21 mat.map[i][j]=ans;22}

23}24return

mat;25}

2627

int cmp(const matrix &p,const matrix &q)33}

34return1;

35}3637

void

floyd()46}

47}48}

49}5051

52int

main()59}

60for(int i=1;i<=n;i++)65}

66}67for(int i=1;i<=n;i++)76}

77}78}

79floyd();

80int

t;81 scanf("

%d",&t);

82while(t--)else

88 printf("

sorry\n");

89}90}

91return0;

92 }

優化後的**。。

1 #include2

const

int n=100;3

const

int inf=10000000;4

using

namespace

std;56

intedge[n][n];

7int

n,m;

8struct

matrix;

11struct

rematrix;

1415

matrix matrix[n];

16rematrix rematrix[n];

1718

void cmp(const

int &a,const

int &b)

24 edge[a][b]=1;25

}2627void createmap(const

int &p,const

int &q)33}

34for(int i=1;i<=n;i++)37}

3839

40void

floyd()49}

50}51}

52}5354

intmain()61}

62for(int i=1;i<=n;i++)69}

70}71for(int i=1;i<=n;i++)76}

77floyd();

78int

t;79 scanf("

%d",&t);

80while(t--)else

86 printf("

sorry\n");

87}88}

89return0;

90 }

hdu2807 矩陣乘法 floyd

網上有優化的方法 就是乘上乙個一維的矩陣 現在還沒有想通。想通了不上 我用的就是普通的矩陣,壓著時間過 只是多了乙個判斷條件,不加這個條件就超時 include include define inf 99999999 define maxn 85 struct mata 85 intn,m,map ...

能力體系比較矩陣

如何使用該矩陣 1 參看第1列列出的 能力體系最佳經驗標準 2 把當前的或準備開發的能力體系的各個要素,與每一條最佳經驗進行比較,並在第2列說明是否符合最佳經驗要求,還是需要採納最佳經驗以滿足業務需求。3 在第3列中,通過比較準備開發的能力體系 第2列 與 最佳經驗 第1列 明確制約因素或需要關注的...

矩陣構造 矩陣快速冪 HDU5950

題目 題意 給出公式f n f n 1 f n 2 2 n 4 給出n f 1 f 2 求f n 分析 快速冪 把公式分解一下,求一下矩陣,矩陣快速冪搞一下就好 題目的難點在於矩陣的構造題解 典型的矩陣快速冪的運用。關鍵是i 4怎麼維護?我們可以當成求第i 1項,那麼i 4就變成了 i 1 4。那麼...