数学吧 关注:940,644贴子:9,424,491
  • 1回复贴,共1
求助

您能帮我解决一下这个组合数学问题吗?😭🙏

只看楼主收藏回复

在一个游戏中,角色马里奥(Mario)需要向前移动。他每次跳跃的距离可以是 1 米、a 米 或 b 米,其中 a 和 b 是满足 1 < a < b 的正整数。
给定一段长度为 m 米的路程(m 为正整数),马里奥始终采用如下策略向前跳跃:
首先,马里奥尽可能多地进行长度为 b 米 的跳跃(前提是不超过终点);
如果还未到达终点,马里奥接着尽可能多地进行长度为 a 米 的跳跃(前提是不超过终点);
最后,剩余的距离通过每步 1 米 的跳跃来完成。
如果在所有能到达终点的跳跃方案中,不存在任何一种方案的跳跃总次数比上述策略的次数更少,则马里奥获胜。反之,马里奥失败。
找出所有满足 1 < a < b ≤ 100 的整数对 (a, b) 的数量,使得马里奥对于任何正整数 m 都能通过上述策略获胜。


IP属地:越南来自Android客户端1楼2025-12-27 19:03回复
    同构于硬币找零问题,相当于问硬币系统(1,a,b)何时是规范的。
    约定:在不额外说明的情况下,下面的小写字母都代指一个正整数。符号“/”代指整型除法运算,符号“%”代指取余运算,即满足b=(b/a)*a+(b%a)。
    我们先从简单的情形开始试试手:
    1.硬币系统(1,a)是规范系统。
    显然如此。我们这样看待问题:假设贪心解不是最优解,那么最优解一定是使用了更少的a。但每少使用1枚a,就要多使用a枚1,从而不可能比贪心解更优,矛盾!
    2.硬币系统(1,a,k*a)是规范系统。
    对于1≤m<k*a的目标m,相当于要证明系统(1,a)规范,这是已证明的;
    对于m≥(k+1)*a的目标m,贪心解至少包含1枚k*a,从而如果贪心解对于m'=m-k*a最优,那么它对于m也最优。这意味着,如果贪心解对m不是最优,那么一定存在某个k*a≤m'<(k+1)*a的目标m',使得贪心解对m'不是最优。只需验证k*a≤m<(k+1)*a的目标m:
    显然,在这时,贪心解使用1枚k*a和若干枚1。假设贪心解不是最优解,那么最优解一定是使用了更少的k*a而用a和1来代替。但每少使用1枚k*a,就要至少使用额外k枚硬币(至少用k枚a来替换1枚k*a),从而不可能比贪心解更优,矛盾!
    现在进入正题:
    3.硬币系统(1,a,b)是规范系统,当且仅当以下条件之一成立:①b%a=0,或者②(b/a)+(b%a)≥a。
    ①是在2.中已证明过的情形,下面考虑②。与2.同理,我们只需验证a≤m<a+b的目标m:
    记m=b+t,贪心解为:1枚b、t枚1,总共使用g(m)=1+t枚硬币。
    设x=m/a、s=m%a,这里s是非负整数。不使用b的最优解候选为:x枚a、s枚1,总共使用f(m)=x+s枚硬币。
    注意这里的构造方式:若贪心解比这个解更差,那么贪心解必定不是最优解;若贪心解比这个解更优,由于其他非贪心解(不使用b)的解不会比这个解更优,那么贪心解必定是最优解。因此,为了使贪心解是最优解,我们需要解不等式g(m)≤f(m)。
    设b=k*a+r,其中k=b/a、r=b%a,这里r是非负整数,我们有m=k*a+r+t。注意0≤r,t<a,我们有0≤r+t≤2*a-2,从而(r+t)/a=0或1。记q=(r+t)/a,我们有:
    m=(k+q)*a+(r+t-q*a)
    从而x=k+q、s=r+t-q*a。代入不等式:
    1+t≤(k+q)+(r+t-q*a)
    →k+r≥1+(a-1)*q
    若q=0,则不等式恒成立;若q=1,则不等式化为k+r≥a,这正是条件②。


    IP属地:安徽来自Android客户端2楼2025-12-27 21:15
    回复