毒藥?解藥?(vijos1026)

2021-05-28 17:58:47 字數 965 閱讀 5298

演算法:搜尋

其實還算是一道比較簡單的bfs,由於長時間不寫了,手有點生……

一看有明顯的0和1的區別,果斷採用位運算。

1.先假設都患病,並設狀態都為1,那麼初始狀態也就是n個1。目標狀態因此很明確就是全為0。

2.因為可以重複選,所以每次從1~m裡選乙個然後再每一項都改變,這裡就採用了位運算的技巧。

program vj1026;

const

maxn=10;

maxm=100;

maxt=10000;

type

atp=record

zt,dep:longint;

end;

var head,tail,n,m:longint;

a:array [0..maxm,0..maxn] of longint;

b:array [0..maxt] of boolean;

que:array [0..maxt] of atp;

procedure init;

var i,j:longint;

begin

readln(n);

readln(m);

for i:=1 to m do

begin

for j:=0 to n-1 do read(a[i,j]);

readln;

end;

end;

procedure main;

var i,j,t:longint;

begin

t:=0;

fillchar(b,sizeof(b),false);

for i:=1 to n do t:=(t shl 1)+1;

head:=0;

tail:=1;

que[1].zt:=t;

que[1].dep:=0;

b[t]:=true;

while head

Hash P1026毒藥?解藥?

1 include 2 include 3 include 4 include 5 using namespace std 6int n,m,map 101 11 dist 1025 11 hash 1025 st 11 7 void read int x 12int hash int a retu...

小老鼠 毒藥

我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以後會在5分鐘後死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五隻小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分 c a 5瓶 b 6瓶 c 31瓶 d 32瓶 分析 考察的是二進位制的問題。5個小...

誰能找出毒藥?

今天,和乙個朋友談論了乙個有趣的問題 有1000個一模一樣的瓶子,其中有999瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。現在,你只有10只小白鼠和一星期的時間,如何檢驗出哪個瓶子裡有毒藥?眨看之下,貌似 有一堆砝碼,有乙個不准,最少幾次稱量可以找出這個砝碼?但這問題關鍵是 ...