遊歷的路線

2021-09-10 10:27:01 字數 2520 閱讀 1523

我們的郭嘉大大經過一段時間發現了袁紹這個人幹大事而惜身,見小利而忘義,又逢曹操在招兵買馬,決定逃離袁紹去投曹操,而我們的曹操在第m天招募良材,我們的郭嘉大大既不能早去,也不能晚去,於是乎,他就趁著這一段時間到其他的城市遊歷一番,而每兩個城市之間只能坐馬車來往,由於我們的郭嘉大大很貪錢,他想用最少的費用,所以需要我們幫他求出這乙個最小的費用。

第一行包含兩個數n,m, 表示有n個城市,和m天後曹操招納良材。城市一就是郭嘉所在的城市,城市n就是曹操處。接下來 n×(

n–1)

n\times (n – 1)

n×(n–1

) 行描述馬車乘坐表。第2到第n行就是描述的城市1到2… n的馬車乘坐表. 第n + 1到第2n-1行描述的城市2到城市1,3…n的馬車乘坐表… … 對每一行,首先有乙個數t,表示城市i到城市j的馬車以t為週期,接下來有t個數,表示每天的馬車的**,如果**為0則表示沒有馬車可坐。(n

≤100

n\leq 100

n≤10

0, m

≤200

m\leq 200

m≤20

0, t≤20

t\leq 20

t≤20

, p ri

ce

≤50000

price \leq 50000

price≤

5000

0 )如果存在這樣的路線使郭嘉第m天到達曹操處,則輸出最少的費用,否則輸出0!

3 5                                       

2 130 150

3 75 0 80

2 110 100

4 60 70 60 50

3 0 135 140

2 70 80

355
比賽的時候傻了,暴力寬搜還打錯了qaq。

動態規劃。定義 f[i

][j]

f[i][j]

f[i][j

] 為在第 j 天到第 i 天的最小花費。 f[n

][m]

f[n][m]

f[n][m

] 即為所求。顯然,我們可以列出如下動態轉移方程:

f (i

,j)=

min(

f(k,

j−1)

+g[k

][i]

[j])

k=1→

nk̸=

if(i,j)=min(f(k,j-1)+g[k][i][j])\\ k=1\to n \\ k\not = i

f(i,j)

=min

(f(k

,j−1

)+g[

k][i

][j]

)k=1

→nk̸

​=i然後打**。。。調了我兩個小時

#include

#include

#include

using

namespace std;

const

long

long inf=

2147483647

;long

long n,m,g[

105]

[105][

205]

,f[105][

205]

;int

main()

g[i]

[j][0]

=g[i]

[j][t]

;for

(int k=t+

1;k<=m;k++

) g[i]

[j][k]

=g[i]

[j][k%t];}

for(

int i=

0;i<=n;i++

)for

(int j=

0;j<=m;j++

) f[i]

[j]=inf;

f[1][

0]=0

;for

(int j=

1;j<=m;j++

)for

(int i=

1;i<=n;i++

)for

(int k=

1;k<=n;k++)if

(i!=k)

f[i]

[j]=

min(f[i]

[j],f[k]

[j-1

]+g[k]

[i][j]);

if(f[n]

[m]!=inf)

printf

("%lld"

,f[n]

[m])

;else

printf

("0");

fclose

(stdin);

fclose

(stdout);

return0;

}

可以加多一維求spfa

動態規劃 JZOJ 1274 遊歷的路線

給出一張圖,每條邊每天都有乙個權值,如果是0 00就代表沒有連邊。求出從1 11號節點走m mm天到達n nn號節點的最短路。n nn和m mm的範圍很小,所以我們可以用o n 2m o n 2m o n2m 的動態規劃。設f i,jf fi,j 為從起點走i ii天到j jj點的最短路,轉移顯然。...

1219 騎士遊歷 解答

1219 騎士遊歷 題目描述 description 設有乙個n m的棋盤 2 n 50,2 m 50 如下圖,在棋盤上有乙個中國象棋馬。規定 1 馬只能走日字 2 馬只能向右跳 問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。輸入描述 input descr...

codevs天梯 騎士遊歷

題目 設有乙個n m的棋盤 2 n 50,2 m 50 如下圖,在棋盤上有乙個中國象棋馬。規定 1 馬只能走日字 2 馬只能向右跳 問給定起點x1,y1和終點x2,y2,求出馬從x1,y1出發到x2,y2的合法路徑條數。分析 當初一開始是用dfs做的,現在一開始也想用dfs做。發現題目劃區是dp,就...