洛谷 P4159 SCOI2009 迷路

2022-06-19 18:51:09 字數 782 閱讀 4768

windy在有向圖中迷路了。 該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n-1。 現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎? 注意:windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。

根據題意,可以寫出轉移方程

\[f_=\sum f_

\]\(f_\)表示第\(j\)時刻在第\(i\)個點時的方案數,\(r\)為\(i\)的前驅,\(w[r]\)為距離

而\(t\le 10^9\),所以肯定是不可行的,就要用到矩陣加速

如果對於上面那個轉移方程是無法矩陣加速的

但是邊權只有\(1…9\),我們可以把\(j\)分開表示,也就是把所有距離的情況都表示出來

那麼對於上面的那個轉移方程就有兩種轉移形式

**和拆點一樣= =

code

#include #include #include using namespace std;

int n,t,d[500][500],s[500][500],b[500][500],p=2009;

char ch;

void jzc(int x[500][500],int y[500][500])

int main()

} for (int i=1;i<=n*9;i++)

s[i][i]=1;

while (t)

cout

}

洛谷 P4159 SCOI2009 迷路

如果邊權為 1 11,則是簡單的矩陣快速冪加速dp遞推方程,又因為邊權並不大,所以考慮拆點,新圖中邊權均為 1 11,將每個點暴力拆成相連的 9 99 個點,對於原先某條邊 u,v,w u,v,w u,v,w 可以轉化為 u uu 拆成的點中第 w ww 個連向 v vv 拆成的點中第 1 11 個...

題解 P4159 SCOI2009 迷路

large 題目和普通的 01 路徑矩陣加速有一點區別,做法很巧。large 給定乙個鄰接矩陣,即每個點之間的邊權,若為 0 則無邊,因為是 a a 的矩陣,所以隱藏含義是每條邊權 1 9 large 因為邊權不只是 1 了,所以不能直接就將每個點連線邊做矩乘,但是資料範圍太大又不能不用矩乘。注意到...

洛谷 4159 SCOI2009 迷路

題目描述 windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。輸入格式 第一行包含兩個整數,n ...