小白鼠檢測液體

2021-06-06 17:23:53 字數 2312 閱讀 7828

q:  我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以後會在5分鐘後死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五隻小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分?

a:  實際上題目出的不太嚴謹,我們假設總共有n瓶液體,以便下面進行展開。

1.      我們先來看乙個更簡單的情形,假設我們現在只有乙隻小白鼠:

這個時候我們還需要對n進行分類討論:

1.1          如果n==2,小老鼠喝掉其中一瓶,最終死掉,則喝掉的有毒,另外一瓶無毒;反之,***。所以乙隻小白鼠可以確定2瓶;

1.2          如果n==3,小老鼠有2種選擇,要麼喝掉一瓶,要麼喝掉兩瓶。喝掉一瓶死掉,那麼可以確定3瓶,沒死掉則只能確定1瓶;喝掉兩瓶死掉,那麼可以確定1瓶,沒死掉則可確定2瓶。因此綜合來看這個時候只能確定1瓶;

1.3          如果n>=4,這個時候可以確定[n/2](取整)瓶,只需把所有的瓶子分成兩個部分,讓這只小白鼠試喝其中一半,如果最終死掉,則可確定另一半無毒,如果沒死,則可確定所喝的那一半無毒;

2.      現在更進一步,假設我們現在有2只小白鼠:

需要注意到的乙個地方是,兩隻老鼠可以給我們展示出2^2=4種狀態。我們假設小白鼠分別為a, b, 喝完死掉與沒死分別為0,1。四種狀態分別是

a0b0    a1b0    a0b1   a1b1

同樣得,2只老鼠實際上也只能對4瓶水p1, p2, p3,p4產生不同的喝法:

0      0     p1

1      0     p2

0      1     p3

1      1     p4

----------------------

a      b

其中1表示喝,0表示不喝。

下面開始展開:

同樣,我們對n進行分類討論,結合上面的討論,如果n<4,那麼兩隻老鼠完全可以把n瓶液體全部檢測出來,***,所以下面的討論從n==4開始:

2.1          如果n==4,那麼

a0b0    -->    p1有毒

a1b0    -->    p2有毒

a0b1    -->    p3有毒

a1b1    -->    p4有毒

計算方法可用下面的方法:

1*(0 or 1)              null         =     ?

null                  1*(0or 1)      =     ?

1*(0 or 1)  &&  1*(0 or 1)     =     ?

---------------------------------------------

a*(0 or 1)            b*(0or 1)

?為1則有毒,為0則無毒,因為n==4的關係,如果3個都沒毒,則剩下的必然就有毒了,所以a0b0-->p1有毒。

2.2          如果n==5,則我們可以將n分成4份(1瓶,1瓶,1瓶,2瓶),類似於2.1&1.2,假設p1,p2,p3,p4分別代表其中的4份。則我們可以確定出3*[n/4]瓶。

2.3          如果n==6,則我們可以將n分成4份(1瓶,1瓶,2瓶,2瓶),類似於2.1&1.2,假設p1,p2,p3,p4分別代表其中的4份。則我們可以確定出2*[n/4]+1*([n/4]+1)瓶。

2.4          如果n==7,則我們可以將n分成4份(1瓶,2瓶,2瓶,2瓶),類似於2.1&1.2,假設p1,p2,p3,p4分別代表其中的4份。則我們可以確定出1*[n/4]+2*([n/4]+1)瓶。

2.5          如果n==8,則我們可以將n分成4份(2瓶,2瓶,2瓶,2瓶),類似於2.1&1.2,假設p1,p2,p3,p4分別代表其中的4份。則我們可以確定出3*[n/4]瓶。

2.6          如果n==4*a+i (i=1,2,3,4), 則可確定3*[n/4]+t    (i=1,4-->t=0;  i=2-->t=1;  i=3-->t=2)

(假設a為任意自然數,下同)

3.      推廣到一般情形,假設有k只小白鼠,那麼:

3.1          n==2^k,則可確定n瓶;

3.2          n==a*2^k+i(i=1,2,3,…,2^k-1,2^k),則可確定

(2^k-1)*[n/2^k]+t    (i=1,2^k-->t=0;  i=2-->t=1;  …; i=2^k-1-->t=2^k-2)

總結一下,利用k只老鼠,至少可檢測出max((2^k-1)*(n/2^k), n)瓶液體。

歡迎批評指正。多說一句,小白鼠還是太無辜了。。

小白鼠排隊

在這裡插入 片總時間限制 1000ms 記憶體限制 65536kb 描述 n只小白鼠 1 n 100 每只鼠頭上戴著一頂有顏色的帽子。現在稱出每只白鼠的重量,要求按照白鼠重量從大到小的順序輸出它們頭上帽子的顏色。帽子的顏色用 red blue 等字串來表示。不同的小白鼠可以戴相同顏色的帽子。白鼠的重...

小白鼠排隊

n只小白鼠 1 n 100 每只鼠頭上戴著一頂有顏色的帽子。現在稱出每只白鼠的重量,要求按照白鼠重量從大到小的順序輸出它們頭上帽子的顏色。帽子的顏色用 red blue 等字串來表示。不同的小白鼠可以戴相同顏色的帽子。白鼠的重量用整數表示。多案例輸入,每個案例的輸入第一行為乙個整數n,表示小白鼠的數...

小白鼠和毒藥

有15個一模一樣的瓶子,其中有14瓶是普通的水,有1瓶是毒藥。任何喝下毒藥的生物都會在一天之後死亡。現在,你只有4只小白鼠和一天的時間,如何檢驗出哪個瓶子裡有毒藥?首先想到的是24 16,思路如下 將15轉換0b1111,從0001到1111有15個數給15個瓶子編號,給4只老鼠編號a b c d,...