hdu 2254 奧運(矩陣快速冪)

2021-06-09 11:17:16 字數 899 閱讀 5511

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

注意:1. 可達矩陣也可求帶重邊,b(n-1)=a+a^2+a^3+...a^n-1,,,,,b[i][j]代表從點i到點j 長度至多為n-1的路徑的個數,,,

2.城市的編號可能很大,注意從新編號

3..注意負數的情況處理

**:

#include#include#includestruct node 

ma,e;

int city[31],len;

int find(int x,bool flag)

return ans;

}node fun(node a,int k)

else

return ((a^(k/2))+e)*fun(a,k/2);

}int main()

int k;

scanf("%d",&k);

while(k--)

int x=find(v1,0);

int y=find(v2,0);

int ans=0;

if(x==50||y==50||t1==0&&t2==0)

printf("0\n");

else

else

if(ans<0)//注意負數的處理,,,,

ans+=2008;

printf("%d\n",ans);

}} }

system("pause");

return 0;

}

快速矩陣冪HDU2254

題意 乙個有向圖,兩個頂點間可能有多條邊,視為不同的路徑,問從v1到v2之間的路徑長度大小在 t1,t2 的方案數mod 2008。輸入n條邊,p1,p2。因為p1,p2 2 32。但是總的頂點數不超過30.所以進行離散化即可。而且有可能t1 t2,所以要判斷一下。輸入的v1,v2可能也不在有向圖內...

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

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

hdu 2254 矩陣的應用

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