欺诈游戏吧 关注:13,925贴子:141,004

死囚试毒酒(简单版本)

只看楼主收藏回复

1024支酒,65个死囚,里面只有一支有剧毒毒,喝后15分钟内必死,剩下30分钟,那么最少几个人可以试出来是哪只酒有毒?(假设喝酒过程不占时间)
看到那个复杂版很不错,但是我觉得题目比较难,先用这个简单的拓宽一下思维


1楼2015-07-27 00:00回复
    酒分成一半
    第一波有32*16
    第二波也有32*16
    然后派出32+16人去试


    IP属地:中国台湾2楼2015-07-27 00:15
    收起回复
      把酒分成32瓶X32堆,派32个人每人喝一堆,有一个人死,剩下的31个人喝他那堆剩下的31瓶,死的人对应那瓶有毒。共需32人。


      4楼2015-07-29 23:24
      收起回复
        用二叉树树来看 要8人吧,不过要死8个人
        先花15min 1024/8=128 找出有毒的128那拨 (花费15min,死一人)
        剩下7个人 2的7次方128
        用二分法,一半一半地把酒分成2拨
        画成树,有7层,每层1人(标号先喝'左‘, 后喝 “右”),先喝左侧分支,后喝右侧
        最后按照每层死的人是30min死了没有(有的31分才死),“左” 还是 “右”,照着走下去,走到标号几就几了


        IP属地:广东5楼2015-08-01 21:40
        收起回复
          呵呵,我觉得这是最简单也是最有效的方法,因为剩下的时间只能够喝2次时间就用完了,这个方法时间够,死人又少,问题也解决了。因为第一次喝完等人死掉用了15分钟,第二次喝等人死了又用了15分钟,不可能还有时间第三次去喝。所以这个办法才是王道。


          IP属地:浙江6楼2015-08-02 16:18
          收起回复
            二进制 十个人足够了


            IP属地:福建来自Android客户端7楼2015-08-02 18:17
            收起回复
              1023 二进制 1111111111 1022 二进制 1111111110以此类推 1 二进制 00000000001


              IP属地:福建来自Android客户端8楼2015-08-02 18:21
              回复


                IP属地:广东来自Android客户端10楼2015-08-05 23:05
                收起回复
                  半夜逛贴吧,没想到看到一个智力题,还让不让人睡了。


                  IP属地:贵州来自Android客户端11楼2015-08-06 00:47
                  回复
                    我来初步分析一下,不对别见怪,主要最近欺诈游戏看多了,遇到题目就脑洞大开想一堆,楼主快公布答案吧,我没耐性,对这类题最多想下就想直接看答案了。


                    IP属地:贵州来自Android客户端13楼2015-08-06 00:51
                    回复
                      1,先看问题中比较关键的时间,一共30分钟,试毒需要15分钟,秒面上看刚好可以试完全不重合的2次。不过要试试能不能用技巧多试几次。
                      题中说15分钟内毒发,就必须等到15分钟才能完全确定。所以最后一次试毒的时间一定应该是在0-15min之间。即16-30mim时的试毒毫无意义。0-15min之间是否能多试几次?0min肯定要试一次,15min也要试一次,因为15min时试酒可以用0min试酒而没死的人试,同时并不增加试酒总人数。。于是假定增加0—15中一次例如7min时试毒a,用除了0min试毒的新人来试,b,用0min试毒的老人来试。。无论那种我大概想了一下,好像都不能真正做到不增加人数的情况下增加试毒次数。。。大概是因为最坏情况即15min才发毒的原因。。


                      IP属地:贵州来自Android客户端14楼2015-08-06 01:24
                      回复
                        2,基于1的分析我就把题目简化成有两次试毒了(不过是基于1分析正确的情况下,其实我并没有完全说服自己,首先是题目的说法总让人想在时间上钻空子,再次是我并不能完全证明不能钻空子,先放一放,大半夜的脑仁疼),于是就是一次怎么能用一定数目的人确定尽可能多的酒中哪个有毒的问题。
                        也就是说怎样用一定数目的人造成尽可能多的结果(即那些人会死)好与哪个酒才是有毒的对应。
                        显然充分利用这些人的死法不仅有个体的死亡,还有两个人一起死亡,3个人死亡....这都是不同的显现可以对应到不同的酒有毒。
                        于是n个人能制造的不同死亡数最多为为,用排列组合表示C1,n(死一个的情况)+C2,n(死两个)+....Cn,n(死n个)(上下角标不会打,凑活着看吧)。上述公式求和的结果是2∧n。
                        大概试几个n值发现n=5时为32,n=10时为1024。
                        显然如果只试一次10个人足够。


                        IP属地:贵州来自Android客户端15楼2015-08-06 01:47
                        收起回复
                          3,如果可以两次的话,要怎样利用2的结论呢。显然2的试法是可以试最多瓶酒但是死人也可能是死绝的,如果第一次试酒就按2来可能第二次就要全部用心人了。假定最坏情况,即参加2试酒的人都死了。
                          a,第二次全部用新人,两次都用2中所试方法,第一次n个人第二次m个人,于是(2∧n)×(2∧m)=1024
                          n+m应为10,故还是需要10个人
                          b,第二次试毒用第一次没死的人,这就要求第一次不能用2中的方法,因为最坏情况是第一次就全体死了,但是第二次可以用。第一次的话可以借鉴2中的方法,假设第一次有n+m个人试毒,有最坏情况下死了m人后第二次有n人试毒,这样能表示的结果数为[C1,(n+m)+C2,(n+m)+...+Cm,(n+m)]×2∧n>1024
                          稍微技巧性试一下发现n+m最小为7其中n为5,m为2


                          IP属地:贵州来自Android客户端16楼2015-08-06 02:05
                          收起回复
                            4,目前是看似出来了一个比较小的结果,和一个比较合理的思路,就看还能不能继续优化,可是我困了。手机打字实在太慢了


                            IP属地:贵州来自Android客户端18楼2015-08-06 02:33
                            收起回复
                              5,试毒方案:以上全部思路都默认的试毒方案(而且我认为只要是一次同时试毒,无论形式多花哨本质都是如此,所以没写,要),给试毒的人编号,给酒编号,第n瓶酒给不同数量的不同编号的人喝。。导致可能会是不同数量的不同编号的人死亡。。从而确定哪瓶酒有毒,也就是说。。试酒人的死亡分布情况数目大于要确定的酒总数就可以完成。。。


                              IP属地:贵州来自Android客户端19楼2015-08-06 09:55
                              收起回复