快速矩陣冪HDU2254

2021-06-28 11:53:54 字數 1028 閱讀 5362

題意:

乙個有向圖,兩個頂點間可能有多條邊,視為不同的路徑,問從v1到v2之間的路徑長度大小在[t1,t2]的方案數mod 2008。

輸入n條邊,p1,p2。因為p1,p2<2^32。但是總的頂點數不超過30.所以進行離散化即可。而且有可能t1>t2,所以要判斷一下。

輸入的v1,v2可能也不在有向圖內。

分析:先進行頂點的離散化,每次遇到相同的邊就+1,然後輸入v1,v2,t1,t2.判斷v1,v2是否在圖內,不在則直接輸出0.

然後判斷t1,t2的大小。如果t1>t2,就交換下。如果此時t2仍然等於0,就是t1=0,t2=0,直接輸出0,即可。

然後利矩陣進行快速求解(a^1+a^2+....a^ t ),然後再(a^1+a^2+...a^t2)-(a^1+a^2+....a^(t1-1))得到(a^t1+a^(t1+1)+....a^t2).

/*//

快速矩陣冪 hdu 2254

//*/

#include#include#include#include#includeusing namespace std;

typedef long long ll;

int mod=2008,n;

struct matrix

}e, z;

matrix mut(matrix a, matrix b)//矩陣相乘

}return ans;

}matrix add(matrix a, matrix b)//矩陣相加

matrix pow(matrix a, ll b)//矩陣的冪

return ans;

}matrix solve(matrix a, int b)//矩陣的冪之和

}maps;

int main()

if(t2==0)//t1=0,t2=0

int a1=s[v1],a2=s[v2];

if(t1 > 1)

else

} }

return 0;

}

hdu 2254 奧運(矩陣快速冪)

題目分析 求t1 t2天內,v1 v2一共有多少條的路徑。就是要用到離散數學的可達矩陣的n次冪各元素的值就是經過n條路可以到達該點。所以說這道題說白了就是叫你求 a t1 a t1 1 a t2 輸出 v1v2該元素的值模2008 注意負數的處理 所以就是要用到矩陣降冪 二分求和。注意 1.可達矩陣...

hdu 2254 矩陣的應用

題意 有向圖中求a點到b點路徑長度為t1 t2的路徑總數 離散數學中,有向圖的鄰接矩陣a表示所有點之間路徑長度為1的路徑數量,a n則表示路徑長度為n的路徑數量,故需要求某兩點在 a t1 a t2 的路徑數量之和 1 include2 include3 include4 const int n 3...

hdu 2254 奧運(鄰接矩陣應用)

problem description 北京迎來了第乙個奧運會,我們的歡呼聲響徹中國大地,所以今年的奧運金牌 day day up 比爾蓋茲坐上鳥巢裡,手裡搖著小紙扇,看的不亦樂乎,被俺們健兒的頑強拼搏的精神深深的感動了。反正我的錢也多的沒地方放了,他對自己說,我自己也來舉辦乙個奧運會,看誰的更火。...