Project1

标题: 一道方案设计题目【答案已公布】 [打印本页]

作者: RyanBern    时间: 2015-2-10 09:55
标题: 一道方案设计题目【答案已公布】
本帖最后由 RyanBern 于 2015-2-10 21:23 编辑

大家好,我又来发题了。

最近几天我没有怎么上RM,原因是在忙米国数学建模大赛的事情,尼玛编了3天程序,看了一天论文。现在出来整个人都不好了。
不过期间发生的一个事情挺有意思的,我和别人讨论模型是不是应该用随机游动模型(RW模型,RW是Random Walk的缩写),当时想说RW,结果顺手就打成了RM模型,可见我还是处处惦记着RM论坛的(什么鬼?)

上次似乎的那个三区撕逼大战博弈题目答案还比较清楚,不过有人总是怀疑它会进行无限循环。那个循环是不会的啊,因为有一个人的出发点是确定的,不存在三个人互相为条件的情况,所以肯定不能有循环啊。出现循环的话,不同人决策之间要相互为条件才行,例如,A的决策取决于B,B的决策取决于C,C的决策取决于A。

言归正传,这次的题目应该会有一个比较明确的答案。

第一个说出答案的同学给100糖,能解释方案原理给10~66糖。

酒柜里面有1000瓶酒,其中有1瓶是毒酒,其余999瓶是没有毒的。现在我知道这1000瓶酒中有1瓶是有毒的,但是不知道是哪一瓶,于是我要想办法给它找出来。
这种毒酒是致命,所以我不可能自己把毒酒找出来,因为等我发现毒酒的那一刻就是我死亡的时刻。而且这种毒是一种慢性毒,虽然喝下毒酒必死无疑,但是毒性发作要等到1天之后。于是我找来10只老鼠,只好让它们来替我找毒酒了。其实我本来想找更多的老鼠,但是老鼠也是生命,我不忍心残害更多无辜的生灵了。之前有人也拿老鼠做过实验,只要老鼠喝下有毒的酒,不管酒的剂量如何,它都会在1天之后毒发身亡。
更糟糕的是,留给我找出毒酒的时间并不多,因为我的酒店明天要来很多客人,他们到时候肯定要喝不少酒。我不是什么土豪,所以实在不舍得扔掉这1000瓶酒,所以我还是在1天之内把这个毒酒找出来的好。可是我要如何去做呢?

下面明确一下条件:
1.能够鉴别酒的毒性的方法只有一种,就是让老鼠去喝,然后在观察一天之后老鼠的情况。此外没有其他任何物品可以直接用来检验酒中是否有毒。
2.如果觉得道具不够,可以自行添加,不过添加的道具不允许有检测毒酒功能(例如再加10只老鼠,或者直接弄个什么毒性检测仪啥的)。这个条件大家理解一下就好,大概意思就是你只能用其他道具来辅助你的方案执行,加的道具坑爹与否一看便知。
3.老鼠只要喝了毒酒,就一定会死,不管剂量如何。死亡时间是在一天之后,也就是我的最后期限。这点一定要注意。


答案:
发这个帖子的时候,就感觉XD会抢答,VIP会撞车
答案已在VIP的帖子中说明,XD的帖子只用一行就说出了原理,果然是经常写脚本的人。
首先,酒有1000瓶,其中有1瓶有毒,所以可能的情况有1000种,而一共有10只老鼠,每只老鼠喝完酒之后,情况只有两种,死亡或生存。对10只老鼠加以区别的话,老鼠的情况一共有2^10=1024种,显然1000<1024,所以只要用老鼠死亡的组合来表示所有毒酒存在的情况即可,此题一定有答案。
首先,准备10个盘子,然后对1000瓶酒进行编号为1~1000,然后将酒的编号换算为2进制数,并用10个0/1表示,位数不够的前面拿0补上。例如,第7号酒的就为0000000111。然后,按照酒的二进制编号给10个盘子里面倒酒,相应位数为1的,就往对应位置的盘子上倒酒,位置为0的就跳过。将所有酒倒完后,将盘子里面的酒摇匀,然后分别给10只老鼠喝下去,第二天观察老鼠死亡情况。如果某老鼠死亡,则将相应位置置为1,如果存活记为0。这样第二天就得到了一个二进制数,这个二进制数代表的编号就是有毒的酒的编号。扔掉那瓶酒即可。

作者: taroxd    时间: 2015-2-10 10:15
1000 < 2**10
剩下的就不用说了吧
作者: david_ng223    时间: 2015-2-10 10:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: VIPArcher    时间: 2015-2-10 10:21
用二进制的位来表示每只老鼠•﹏•
把酒的编号转化为二进制=_=
二进制为1的位置的老鼠喝酒
例如1号酒就由0000000001第一位老鼠喝QAQ
2号酒由第0000000011第一位和第二位老鼠喝QAQ
以此类推。死掉的位就是1没死的位就是0
对!这是个0和1的故事-_-||(什么鬼
作者: 英顺的马甲    时间: 2015-2-10 10:44
如果老鼠的状态是死亡,活着,活着,死亡,活着,死亡,死亡,活着,死亡,活着的话就把第602号酒丢了

把下毒者抓起来,把老鼠塞进他嘴巴逼他说出哪瓶酒有毒。
1. 由于不是检测而是直接知道答案,因此符合条件
2. 绑架工具没有一样是能测毒的,因此符合条件
3. 以各种残忍手段足以在24小时之内逼供,因此符合条件
作者: 我玩挖掘机    时间: 2015-2-10 11:00
即使看到了正确答案我也不懂是什么意思
作者: chd114    时间: 2015-2-10 12:04
强制喂酒,让怀孕的那10只老鼠早产,然后看哪些母老鼠和老鼠仔死了不就知道了吗···难产嘛,那也可以扔了
作者: bloodyliao    时间: 2015-2-11 08:27
挺有意思的,不过想问一下哈,如果毒酒的数量不是1瓶而是两瓶
当然小白鼠的数量可以增加,
那又该如何分析这个问题呢?
作者: taroxd    时间: 2015-2-11 10:34
本帖最后由 taroxd 于 2015-2-11 16:21 编辑
bloodyliao 发表于 2015-2-11 08:27
挺有意思的,不过想问一下哈,如果毒酒的数量不是1瓶而是两瓶
当然小白鼠的数量可以增加,
那又该如何分析 ...

忘了只有一天的条件了

作者: bloodyliao    时间: 2015-2-11 10:59
前500瓶有两瓶,后500瓶没有以及反过来的情况觉得就比较复杂了……
现在变成500瓶中有2瓶毒……这要怎么用老鼠来表示?
作者: 精灵使者    时间: 2015-2-12 15:50
本帖最后由 精灵使者 于 2015-2-12 16:32 编辑

如果只能检测一次的话可以用排除法。
10只老鼠分别标上100..1000之类的分法,然后每只老鼠喝100瓶混合酒(编号是肯定的)然后第二天观察老鼠死亡情况。
如果第二天有老鼠死亡(或者两只老鼠死亡),可以把剩下的900/800瓶酒(确认无毒)拿出去招待客人。
如果酒不够可以去购买新的酒追加,可以吧?
客人不会喝你藏起来的毒酒,对吧?
这样即使是少供应些酒,但是至少没有断货供应的情况。
所以,剩下的100/200瓶酒可以慢慢的用剩下的老鼠验毒就OK。
不过这似乎有更好的办法。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1