noi05 聰聰和可可

2021-06-05 12:33:19 字數 1512 閱讀 6651

這題還是比較容易的,不過第一次時寫掛了。。。主要思路就是類似spfa的方法預處理得到next陣列,然後就是記憶化搜尋,我沒用鏈式鄰接表,但既然陣列模擬沒mle,那就不該了吧。。

貼**(這個是我最近寫的最短的**了):

const

maxn=1010;

var g,dist,next:array[1..maxn,0..maxn] of longint;

vis:array[1..maxn] of boolean;

q:array[0..maxn] of longint;

f:array[1..maxn,1..maxn] of double;

n,e,c,m:longint;

procedure init;

var i,a,b:longint;

begin

readln(n,e);

readln(c,m);

for i:=1 to n do g[i,0]:=0;

for i:=1 to e do begin

readln(a,b);

inc(g[a,0]); g[a,g[a,0]]:=b;

inc(g[b,0]); g[b,g[b,0]]:=a;

end;

fillchar(f,sizeof(f),0);

end;

procedure path;

var top,last,i,j,now:longint;

begin

for i:=1 to n do

for j:=1 to n do dist[i,j]:=maxlongint;

for i:=1 to n do begin

dist[i,i]:=0;

next[i,i]:=i;

fillchar(vis,sizeof(vis),false);

vis[i]:=true;

top:=0; last:=1; q[last]:=i;

while top1e-9 then exit(f[p,q]);

sum:=getf(p,q);

for i:=1 to g[q,0] do

sum:=sum+getf(p,g[q,i]);

sum:=sum/(g[q,0]+1)+1;

getf:=sum;

f[p,q]:=sum;

end;

procedure main;

begin

assign(input,'cchkk.in');

assign(output,'cchkk.out');

reset(input);

rewrite(output);

init;

path;

write(getf(c,m):0:3);

close(input);

close(output);

end;

begin

main;

end.

Noi2005 聰聰和可可

noi2005 聰聰和可可 time limit 10000ms memory limit 65536k total submit 21 accepted 14 description input 資料的第1行為兩個整數n和e,以空格分隔,分別表示森林中的景點數和連線相鄰景點的路的條數。第2行包含兩...

NOI 2005 聰聰和可可(DP)

題目大意 給你個無向圖,貓在乙個點,老鼠在乙個點,貓一次走兩步,老鼠一次可以一步,也可以不走。貓每次會選擇離老鼠最近的並且編號最小的點走。老鼠有1 p 1 的概率停留在原地或走向相鄰的乙個點 p為當前點的度 求貓追老鼠的步數的數學期望。題目分析 真是個悲劇的題啊 最開始就想這個題沒法做啊 怎麼搞啊,...

NOI2005 聰聰與可可

輸入檔案 cchkk.in輸出檔案 cchkk.out簡單對比 時間限制 1 s 記憶體限制 256 mb 問題描述 在乙個魔法森林裡,住著乙隻聰明的小貓聰聰和乙隻可愛的小老鼠可可。雖然灰姑娘非常喜歡她們倆,但是,聰聰終究是乙隻貓,而可可終究是乙隻老鼠,同樣不變的是,聰聰成天想著要吃掉可可。一天,聰...