数学吧 关注:918,367贴子:8,843,779

同类相食问题

只看楼主收藏回复

好像是小时候看到的一个题目
100只生物被困在密闭环境中,每只生物的尸体可以提供10份食物,其保质期是5天,每只生物每日的消耗是1份食物
(1)求它们可以生存的最大时间
(2)进一步地,该问题是否存在解析解
想了想还是没什么思路


IP属地:天津来自Android客户端1楼2023-06-06 08:20回复
    这个好玩,插眼


    IP属地:日本来自Android客户端2楼2023-06-06 10:49
    收起回复
      2025-08-13 20:46:28
      广告
      不感兴趣
      开通SVIP免广告
      死的条件是啥


      IP属地:湖南来自Android客户端3楼2023-06-06 10:49
      收起回复
        为了做题,真残忍


        IP属地:江苏来自Android客户端4楼2023-06-06 12:02
        收起回复
          插眼,下班后慢慢想,顺带想想有没有可能变成个团建游戏


          IP属地:浙江来自Android客户端5楼2023-06-06 12:24
          收起回复
            有一条可能需要确认,一个一直饿着的生物饿几天才会死?
            这个问题是有意义的,如果一只生物可以饿一段时间而保持不死的话,相当于变相延长了尸体食物的保质期


            IP属地:山东来自Android客户端6楼2023-06-06 12:29
            收起回复
              感觉可以从只剩最后1人的情况逆推回去,核心是多杀戮的同时尽可能减小食物过期


              IP属地:天津来自Android客户端7楼2023-06-06 12:35
              收起回复
                根据六楼里楼主的回复,这个问题可以更形式化一些。
                从0时刻开始,每隔一天进行一次这群生物的“生存判定”,可以按照如下顺序:
                饿死一部分的生物,它们立即转换为食物
                另一部分生物进食,吃不完的食物进入保质期的倒计时
                可以看到对于某个时刻,在进行“生存判定”之前,还存活着的生物有且仅有这两种选择,而它们积累的食物可能各自处于不同倒计时的保质期内
                希望这样说能够帮助理解这个问题


                IP属地:山东来自Android客户端8楼2023-06-06 12:43
                收起回复
                  2025-08-13 20:40:28
                  广告
                  不感兴趣
                  开通SVIP免广告
                  直接算一只生物活到n天需要多少只同类就好了
                  没有起始日期和保存时间更好算
                  比如1个尸体提供一份 保质期当天


                  IP属地:浙江来自iPhone客户端9楼2023-06-06 12:55
                  收起回复
                    上述定义成s_n
                    s_n=1+0.1*{5s0+s1+…+s_(n-4)}


                    IP属地:浙江来自iPhone客户端11楼2023-06-06 12:58
                    回复
                      优先进食保质期剩余时间更短的食物,应该是最优解的选择
                      不知道下面这个策略是否正确:每天争取饿死最少的生物
                      第0天:饿死10只,共有100事物,剩下90只进食,还剩10食物,保质期剩5天
                      第1天,饿死8只,共有90食物(加上昨天的),剩下82只进食,还剩8食物,保质期剩5天
                      第2天,饿死7只,共有78食物,剩下75只进食,还剩3食物,保质期剩5天
                      ……
                      按照这个策略,在接下来为了简化表述就直接按顺序列举每日情况对应的数字(拿程序跑的):
                      3:7-73-68-5
                      4:6-65-62-3
                      5:6-63-56-7
                      ……
                      25: 1-18-8-10
                      26: 0-10-8-2
                      第26天首次出现了不需要再饿死生物,食物也足够的情况,此时需要食物的保质期达到2天
                      27: 1-12-7-5
                      28: 1-15-6-9
                      29: 0-9-6-3
                      ……
                      38: 1-12-2-10
                      39: 0-10-2-8
                      40: 0-8-2-6
                      41: 0-6-2-4
                      42: 0-4-2-2
                      43: 0-2-2-0
                      第38天饿死了1只生物,它的食物撑过了接下来的5天,正好在第43天保质期到的时候吃完
                      44: 1-10-1-9
                      45: 0-9-1-8
                      46: 0-8-1-7
                      47: 0-7-1-6
                      48: 0-6-1-5
                      49: 0-5-1-4
                      第44天饿死的生物,所提供的食物保质期只能到第49天,在第50天所有食物过期,最后一只生物饿死
                      按照这个策略,从第0天开始计算,这群生物最长能够生存49天,会在第50天全部死亡
                      不确定这个贪心的策略是否为最优解,但是按照这个策略可以精确地计算每天的情况


                      IP属地:山东12楼2023-06-06 13:16
                      收起回复
                        编个程序呗


                        IP属地:上海来自Android客户端13楼2023-06-06 13:16
                        回复
                          回13楼,程序我试着做了一下,用的是不够吃就杀戮的简单算法。当时我想应该提前杀死一部分,卡着过期最后一刻再吃掉,最大化节省食物,但是尸体能提供的食物太多,加上保质期太短,可能导致了如果提前杀戮就必然伴随浪费。
                          所以条件里的参数可能具有特殊性,那么这里有没有解析解呢?


                          IP属地:天津来自Android客户端14楼2023-06-06 14:14
                          收起回复
                            cy


                            来自Android客户端15楼2023-06-06 14:53
                            回复
                              2025-08-13 20:34:28
                              广告
                              不感兴趣
                              开通SVIP免广告
                              饿死a只,食物为10a.食用日期为b天,剩下生物数量为100-a只,日消耗食物量为100-a只,其中b≤5 有关系式:(100-a)b≤10a b=10a/(100-a) ≤5 a≤100/3。 a取临界值为最优解(有待论证)。
                              第一天饿死33只, 共有330食物,剩下67只进食,还剩263食物,保质期剩四天。一直吃
                              第四天, 剩下67只进食,还剩62食物,保质期剩1天。
                              第五天重新计算 饿死a只,食物为62+10a或者10a+67-a.食用日期为b天,剩下生物67-a只,日消耗食物为67-a.有关系式:第一种62不够吃 (67-a)b=62+10a b≤5,62+10a≤335-5a a≤273/15 a为18矛盾
                              第二种62够吃浪费了
                              (67-a)(b-1)=10a 10a=268-4a
                              a≤268/14 a取19
                              第五天饿死19只,剩余食物190,剩下已进食生物48只,保质期5天,浪费食物14
                              一直吃
                              第九天现有食物46现有未进食生物48只,饿死a,食物为10a+46,剩余生物48-a ,(48-a)(b-1)=10a 14a=192 a取13
                              第九天饿死13只,剩余粮食130+11,生物35只,未浪费0
                              第十天 粮食-35 第十一天粮食-35 第十二天粮食-35第十三天粮食-35第十四天粮食-35 浪费食物1
                              第十五天饿死11只. .存活24只,粮食110,粮食-24 。第十六天-24,第十七天-24,第十八天-24 第十九天饿死7只,现有生物17,剩余粮食67。第二十天粮食
                              -17 第二十一天-17第二十二-17第二十三天 饿死4只 现有生物13只.进食后食物40 浪费食物3 第二十四-13 第二十五-13第二十七, 饿死4只现有生物9,粮食41,进食-9 第二十八-9 第三十一天饿死2只现有生物7只,粮食25,-7 第三十三天-7 第三十四天 饿死2只现有生物5,粮食24,-5 第三十七天-5 第三十八天 饿死1只现有生物4,粮食14,-4 第四十天-4,第四十一天饿死1,现有生物3,粮食12,-3 第四十五天饿死1,现有生物2,粮食10,-2第五十天饿死1,现有独苗1只,粮食10,-1 第五十六天 粮食保质期过了 最后一只死了 。总结能活过55天,最后只在五十六天死掉,浪费粮食18+5+10(最后只)=33


                              来自Android客户端16楼2023-06-06 16:45
                              回复