當前位置:成語大全網 - 書法字典 - 四川省oi的洪水

四川省oi的洪水

使用了壹種相當尷尬的算法。雖然是階乘級,但是n太小過不去。

我使用並集(以字典中最小的元素為代表元素)+HASH來存儲狀態,並添加壹個雙映射來枚舉每條邊進行轉移。

考試中壹個用了and,壹個用了哈希表中的mod,結果是wa7分。

程序xqz

const mo = maxintmaxn = 800000

類型arr=array[0..8]的渴望;

定義變量

I,j,k,m,n,now,r,tot,f1,f2,aim,s,t,e:longint;

問:數組[0..1,0..arr的maxn];

f:數組[0..1,0..maxn]of real;

last,next,hash,pos,p1:array[0..longint的maxn+mo];

ss,tt:數組[0..30]的渴望;

p:數組[0..30]的真實;

a,ci:arr;

是,ok:布爾型;

ans:擴展;

函數get(a:arr):longint;

var現在,我:longint

開始

現在:= 0;

對於i:=1到n do

inc(現在,(a[I]-1)* ci[I-1]);

get:= now;

結束;

程序插入(現在:longintlv:加長);

var k:longint;

開始

k:=現在和mo;

while next[k]& lt;& gt0 do

開始

k:=下壹個[k];

如果hash[k]=now,那麽

開始

f[t,p1[k]]:=f[t,p 1[k]]+LV;

退出;

結束;

結束;

Inc(e);hash[e]:= now;下壹個[k]:= e;last[e]:= k;

Inc(r);q[t,r]:= a;//!!

f[t,r]:= LV;pos[r]:= e;p 1[e]:= r;

結束;

開始

賦值(輸入,' flood . in ');復位(輸入);賦值(output,' flood . out ');重寫(輸出);

讀(n,m);

for i:=1 to m do read(ss[i],tt[i],p[I]);

ci[0]:= 1;for i:=1到n do ci[I]:= ci[I-1]* n;

s:= 1;t:= 0;對於i:=1到n做a[I]:= I;

r:= 0;e:= mo;現在:= get(a);插入(現在,1);下壹個[現在和mo]:= 0;

對於i:=1到m do

開始

s:=(s+1)和1;t:=(t+1)和1;e:= mo;tot:= r;r:= 0;

for j:=1 to tot do

開始

a:=q[s,j];f 1:= a[ss[I]];F2:= a[TT[I]];

現在:= get(a);

insert(現在,f[s,j]* p[I]);

如果f 1 & lt;f2然後a[f2]:=f1

else a[f 1]:= F2;

對於k:=1到n做a[k]:= a[a[k]];

現在:= get(a);

insert(now,f[s,j]*(1-p[I]);

結束;

for j:= 1 to r do next[last[pos[j]]]:= 0;

現在:=現在;

結束;

對於j:=1到r do

如果get(q[t,j])=0,則

開始

ok:=真;ans:=ans+f[t,j];

結束;

如果不正常,則寫入(0.000)

else writeln(答:0:3);

關閉(輸入);關閉(輸出);

結束。