hdu 3409 最短路樹 樹形dp

2022-08-09 09:09:07 字數 1384 閱讀 3859

參考部落格:

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 205

;const

int maxe = 20500

;const

int inf = 0x3f3f3f

;struct

edge

bool

operator

< (const edge& e) const

}edges[maxe];

inthead[maxn];

vector

g[maxn];

intcnt;

intn,m,p;

double pt[maxn][maxn/2

];double dp[maxn][maxn/2]; //

dp[i][j]表示以i為根、部署j個警察逮到robber的最大概率;

void addedge(int u,int v,int

w)void

dijkstra());

d[0] = 0

;

while(!q.empty())

for(int i=head[u];i!=-1;i=edges[i].next));

//把u存進去是為了方便建最短路圖;

} }

}}void dfs(int

u)

return

; }

for(int i=0;i)

for(int i=p;i>=0;i--) //

總共i個人

for(int j=0;j<=i;j++)

}int

main()

scanf("%d

",&p);

for(int i=0;i0] = 0

;

for(int i=0;i)

for(int j=1;j<=p;j++)

dijkstra();

//形成以0為根的最短路樹;存在g[u]中;

dfs(0);

double ans = 0

;

for(int i=0;i<=p;i++)

ans = max(ans,dp[0

][i]);

printf(

"%.2lf\n

",ans*100

); }

}

view code

HDU 2433 Travel 最短路樹

題意 給乙個n個點m條邊的無向圖 分別刪除每條邊 問刪除後的新圖中 分別以每個點為原點 到其它點的最短距離之和 圖不連通時輸出inf 思路 如果對於每一條邊刪除後都做n次最短路 則時間複雜度為o m n m log n 時間複雜度太高 仔細分析一下不難發現 只有刪除的邊是最短路樹上的邊 各點之間的最...

HDU 4568 Hunter 最短路 狀壓DP

題意 給乙個n m的格仔,格仔中有一些數,如果是正整數則為到此格仔的花費,如果為 1表示此格仔不可到,現在給k個寶藏的地點 k 13 求乙個人從邊界外一點進入整個棋盤,然後拿走所有能拿走的寶藏的最小花費,如果一次不能拿走所有能拿到的或者根本拿不到任何寶藏,輸出0.解法 看到k的範圍應該想到狀態壓縮,...

hdu 4607 樹形dp 樹的直徑

題目大意 給你n個點,n 1條邊,將圖連成一棵生成樹,問你從任意點為起點,走k k n 個點,至少需要走多少距離 每條邊的距離是1 思路 樹形dp求樹的直徑r a 若k r 1 ans k 1 b 若k r 1,ans r k r 1 2 include include includeusing n...