TYVJ3097 3121 3369 戰略遊戲

2021-07-05 06:06:47 字數 1622 閱讀 6892

給一棵n個節點的樹,在點上放置士兵,每個士兵能監視周圍的所有邊,詢問最少放置的士兵數dp

[i,0

]表示在

i點不放

士兵合法

的最小放

置數dp

[i,1

]表示在

i點放士

兵合法的

最小放置

數 dp

[i,0

]=∑d

p[so

n[i]

,1]

dp[i

,1]=

∑(dp

[son

[i],

1],d

p[so

n[i]

,0])

min

var

w:array[0..7500,1..2]of longint;

dp:array[0..1505,0..1]of longint;

y:array[0..1505]of longint;

i,j,k:longint;

n,a,b,c,len:longint;

procedure

init

(a,b:longint);

begin

w[len,1]:=b;

if w[a,2]=0

then w[a,2]:=len else w[w[a,1],2]:=len;

w[a,1]:=len; inc(len);

end;

function

min(a,b:longint):longint;

begin

if a>b then

exit(b) else

exit(a);

end;

procedure

dfs(a:longint);

var tt:longint;

begin

y[a]:=1; dp[a,0]:=0; dp[a,1]:=1;

if (w[a,1]=w[a,2])and(y[w[w[a,1],1]]=1)

then

exit;

tt:=w[a,2];

while tt<>0

dobegin

if y[w[tt,1]]=0

then

begin

dfs(w[tt,1]);

inc(dp[a,1],min(dp[w[tt,1],1],dp[w[tt,1],0]));

inc(dp[a,0],dp[w[tt,1],1]);

end;

tt:=w[tt,2];

end;

end;

begin

readln(n); len:=n+1;

for i:=1

to n do

begin

read(a,b);

for j:=1

to b do

begin

read(c); init(a,c); init(c,a); end;

end;

dfs(0);

writeln(min(dp[0,0],dp[0,1]));

end.

tyvj 叢林探險

東非大裂谷中有一片神秘的叢林,是全世界探險家的樂園,著名黃 探險家bb一直想去試試。正好我國科學家2005年4月將首次對東非大裂谷進行科考,bb決定隨科考隊去神秘叢林探險。在出發之前,他蒐集了國內外有關神秘叢林探險的資料,並繪製成一張地圖 該地圖上有若干安全點 包括入口點和出口點 並將這些安全點編號...

Tyvj 模擬賽 運

zhx和妹子們玩數數遊戲。僅包含4或7的數被稱為幸運數。乙個序列的子串行被定義為從序列中刪去若干個數,剩下的數組成的新序列。兩個子串行被定義為不同的當且僅當其中的元素在原始序列中的下標的集合不相等。對於乙個長度為n的序列,共有2n個不同的子串行。包含乙個空序列 乙個子串行被稱為不幸運的,當且僅當其中...

TYVJ1133(銀行取款)

演算法 佇列 很簡單的乙個佇列操作。i命令是向隊尾追加乙個元素,o命令是輸出隊頭元素並且隊頭出隊。program p1133 var x,tail,head longint que array 1.100 of longint ch char begin assign input,p1133.in ...