矩陣快速冪(可以起到優化dp動態規劃的作用)

2021-10-12 17:18:59 字數 1661 閱讀 6469

a^b2

題目描述

求a^b 由於結果可能很大,我們現在只需要知道這個值mod 1012就可以了(為什麼是1012?我的生日)

有n組數n<=5

a<=100

b<=maxlongint;

輸入格式

第1行1個數 n第2到n+1行 兩個數a,b

輸出格式

n行 每個a^b mod 1012的值

樣例輸入

12 2

樣例輸出

4

#include

using

namespace std;

typedef

long

long ll;

ll fastpow

(ll a,ll k,ll m)

return res;

}int

main()

return0;

}

矩陣乘法

題目描述

給出兩個矩陣a和b,求兩個矩陣相乘的結果c

相乘的方法是:假設矩陣a是n行m列的矩陣,矩陣b是m行k列的矩陣,矩陣c會得到乙個n行k列的矩陣。

矩陣c中第i行,第j列的元素,值為:矩陣a的第i行,與矩陣b的第j列的對應元素,相乘相加的結果。

例如:a是4行3列的矩陣,b是3行2列的矩陣。

矩陣a為:

1 2 3

4 5 6

1 1 1

2 2 2

矩陣b為:

6 57 1

8 8則:

c[1][1]=1*6+2*7+3*8=6+14+24=44;

c[1][2]=1*5+2*1+3*8=5+2+24=31;

c[2][1]=4*6+5*7+6*8=24+35+48=107;

c[2][2]=4*5+5*1+6*8=20+5+48=73;

c[3][1]=1*6+1*7+1*8=6+7+8=21;

c[3][2]=1*5+1*1+1*8=5+1+8=14;

c[4][1]=2*6+2*7+2*8=12+14+16=42;

c[4][2]=2*5+2*1+2*8=10+2+16=28;

輸入格式

第一行三個正整數 n,m,k。( 0 < n,m,k < 100)

接下來的n行,每行m個數,表示矩陣a。

在後面的m行,每行k個數,表示矩陣b。

輸出格式

輸出矩陣c。

樣例輸入

4 3 2

1 2 3

4 5 6

1 1 1

2 2 2

6 57 1

8 8樣例輸出

44 31

107 73

21 14

42 28

#include

using

namespace std;

const

int max=

110;

int a[max]

[max]

,b[max]

[max]

,c[max]

[max]

;int n,m,k;

void

mul(

)int

main()

}

Q老師度假 動態規劃dp 矩陣快速冪優化

忙碌了乙個學期的 q老師 決定獎勵自己 n 天假期。假期中不同的穿衣方式會有不同的快樂值。已知 q老師 一共有 m 件襯衫,且如果昨天穿的是襯衫 a,今天穿的是襯衫 b,則 q老師 今天可以獲得 f a b 快樂值。在 n 天假期結束後,q老師 最多可以獲得多少快樂值?輸入檔案包含多組測試樣例,每組...

矩陣二分快速冪優化dp

思路就是先寫出dp的狀態轉移方程,然後再把它轉成形如 f i f i 1 a f i 1 f i 2 的形式,尤其是看到要求的i值取值範圍很大時,明白不能普通dp了不然容易超時 然後由 矩陣二分快速冪 來快速直接求得f i 而不用像普通dp一樣乙個乙個向上做。2018 3 31 又默碼了一遍,發現有...

矩陣快速冪優化DP 校內測試

實際上是水水題叻,先把樸素dp方程寫出來,發現 dp i 實際上是 dp i k dp i 1 的和,而看資料範圍,我們實際上是要快速地求得這段的和,突然就意識到是矩陣快速冪叻。構建矩陣什麼的還是很簡單滴,主要就是練一練手。還有就是水一水blog!換個字型,換個心情!快速乘是在模數很大時要用,避免超...