bzoj2595 Wc2008 遊覽計畫

2022-05-01 07:00:08 字數 2093 閱讀 1033

time limit: 10 sec  memory limit: 256 mbsec  special judge

submit: 1931  solved: 943

[submit][status][discuss]

第一行有兩個整數,n和 m,描述方塊的數目。 

接下來 n行, 每行有 m 個非負整數, 如果該整數為 0, 則該方塊為乙個景點;

否則表示控制該方塊至少需要的志願者數目。 相鄰的整數用 (若干個) 空格隔開,

行首行末也可能有多餘的空格。

由 n + 1行組成。第一行為乙個整數,表示你所給出的方案

中安排的志願者總數目。 

接下來 n行,每行m 個字元,描述方案中相應方塊的情況: 

z  『_』(下劃線)表示該方塊沒有安排志願者; 

z  『o』(小寫英文本母o)表示該方塊安排了志願者; 

z  『x』(小寫英文本母x)表示該方塊是乙個景點; 

注:請注意輸出格式要求,如果缺少某一行或者某一行的字元數目和要求不

一致(任何一行中,多餘的空格都不允許出現) ,都可能導致該測試點不得分。

4 4

0 1 1 0

2 5 5 1

1 5 5 1

0 1 1 0

6 xoox

___o

___o

xoox

對於100%的資料,n,m,k≤10,其中k為景點的數目。輸入的所有整數均在[0,2^16]的範圍內

ljcc930提供spj

分析:裸的斯坦納樹.

感覺沒什麼好說的,就是要記錄路徑比較麻煩,我的做法是在乙個結構體裡記錄每個f值的地圖,每次更新就在地圖的基礎上更新.

#include #include 

#include

#include

#include

using

namespace

std;

const

int inf = 0x7ffffff,dx = ,dy = ;

struct

node

e[120

];struct

node2

void

push(node temp)

} f[

12][12][(1

<< 10) + 1

],pos;

int n,m,a[12][12],tot,maxn,ans = inf,b[12][12],vis[12][12

],cnt;

node2 hebing(node2 a,node2 b)

return

temp;

}void spfa(int

sta)

while (!q.empty())}}

}}

}int

main()

}maxn = (1

<< tot) - 1

;

for (int i = 1; i <= n; i++)

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

for (int k = 0; k <= maxn; k++)

f[i][j][k].init();

for (int i = 1; i <= tot; i++)

for (int sta = 0; sta <= maxn; sta++)}}

}spfa(sta);

}pos.init();

for (int i = 1; i <= n; i++)

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

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

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

if(pos.p[i][j])

for (int i = 1; i <= tot; i++)

printf(

"%d\n

",cnt);

for (int i = 1; i <= n; i++)

printf("\n

");}

return0;

}

BZOJ 2595 Wc2008 遊覽計畫

啊 斯坦納樹 好像很厲害啊 反正我之前不會。其實不知道實用性怎麼樣 畢竟複雜度不小。大概過程就是乙個狀壓dp spfa 列舉狀態 從小狀態更新大狀態 再對當前狀態做一次像spfa一樣的鬆弛操作 下面這個人講的不錯 可以去看看 為什麼我的 又那麼短 有點擔心優美度了 有誰提一下建議嗎2333 我覺得還...

BZOJ 2595 Wc2008 遊覽計畫

n m 的網格,如果 a 0 則表示景點,否則表示這裡的需要的志願者人數。求一種安排志願者的方案使得所有景點連通且志願者最少。本題可以插頭dp,然而有乙個東西叫斯坦納樹,來學習學習。令 f i,j,s 表示 i,j 為根,連通性為 s 的最少志願者。則有轉移 f i,j,s min begin f ...

bzoj2595 Wc2008 遊覽計畫

斯坦納樹 f i zt 表示以i為根,連成的聯通塊包括那些景點 兩個轉移 f i zt f i tzt f i zt tzt a i f i zt f j zt a i i,j 相鄰 後面這個可以用spfa優化 記得先進行前乙個轉移,還有容斥減掉a i include include include...