-4

我不是想在这里开个玩笑,但我很困惑我已经连续 6 个小时试图弄清楚这一点,现在在这里打开了大约 20 个记事本,15 个计算器,我无法计算它我总是得到太多最后过剩。

让我们在这里解释一些我们必须使用的变量。说我们得到了

2566 最低点 / 2566 最高点

0 最小经验 / 4835 最大经验

有 2 种类型的工作需要同时使用这两个变量(点数和 xp)

作业 (1) 每次点击减去 32 点,每次点击增加 72 xp。

作业 (2) 每次点击减去 10 点,每次点击增加 14 xp。

我试图弄清楚如何正确计算多余的部分。所以它会浪费最少的 Job(1) 来获得足够的积分来做尽可能多的 Job(2) 并且仍然达到最大 xp。

这就是我不想运行 Job1 的事情,直到没有剩余积分为止,因为这样做,Job1 将超过最大 XP (2566),我将永远无法执行任何 Job2。

我想获得最大可能的 Job2,然后使用适当的计算来实现或使用 Job1 溢出 2566 的 MaxXP 以始终达到最大 XP。我的情况几乎是我需要获得 2566 MaxXP 才能继续完成工作。在牢记这一点的同时,我想将最优先级放在作业 2 上,并且只使用作业 1 来达到 2566 的必要 MaxXP 以将最小点重置为最大以重做整个过程。我正在尝试自动化这个。

这是我的方程式

amountOfJob1s = (minPoints / 32)

amountOfJob2s = (minPoints / 10)

过剩XP = (amountOfJob1s * 72) - maxXP

如果excessXP < 0 则中断

结果

mustDoJob1s = ???

mustDoJob2s = ???

如果有人能帮我解决这个问题,谢谢你,所以我可以在这里提出一个很好的方程式,我将不胜感激。

要么这在数学上是不可能的,要么我就是无法处理它我相信我有足够的变量。

4

3 回答 3

2

job1为job1 的数量, job2为job2 的数量。我们剩下两个方程和两个未知数:

job1 * 32 + job2 * 10 = 2566
job1 * 72 + job2 * 14 = 4835

所以:

job1 = 45.683...
job2 = 110.411...

给定job1作为更高的 xp/point 比率,并且您想超过 4835 xp,将 job1 向上舍,计算job2并将其向下舍入。

job1 = 46

job1 * 32 + job2 * 10 = 2566
job2 = 109.4

job2 = 109

查看:

job1 * 32 + job2 * 10 = 2562 points
job1 * 72 + job2 * 14 = 4838 xp

完毕。

两个未知数几乎不是“新的数学突破”:)

于 2010-12-29T09:21:09.477 回答
0

a为 Job 1b的编号和 Job 2 的编号。

XP = 72 a + 14 b
P = 32 a + 10 b

您似乎想要求解a和,b这样和尽可能大。XP <= 4835P <= 2566b

72 a + 14 b <= 4835
32 a + 10 b <= 2566

b时最大a = 0,即

b <= 4835 ÷ 14, => b <= 345
b <= 2566 ÷ 10, => b <= 256 

由于b必须同时低于 345 和 256,它必须低于 256。

换回:

72 a + 14 × 256 <= 4835, => a <= ( 4835 - 14 × 256 ) ÷ 72, => a <= 17
32 a + 10 × 256 <= 2566, => a <= ( 2566 - 10 × 256 ) ÷ 32, => a <= 0

所以 a = 0,XP 是 2560,使用的点数是 3584。

或者,您可以求解两个不等式的最接近满足

72 a + 14 b <= 4835                (1)
32 a + 10 b <= 2566                (2) 
b <= ( 2566 - 32 a ) ÷ 10          (3) rearrange 2
72 a <= 4835 - 1.4 ( 2566 - 32 a ) (4) subst 3 into 1
27.2 a <= 1242.6
a <= 45.68

所以选择a = 45作为最大整数解,给出b = 112,XP 是 4808,使用的点数是 2560

对于其中任何一个,都不需要计算机编程;如果与两个工作相关的常数发生变化,那么公式就会发生变化。

对于更难解决的例子,相关的数学领域称为线性规划

于 2010-12-29T09:16:27.713 回答
0

我假设您希望获得尽可能多的“XP”,同时通过{n1, n2}在两个“工作”中的每一个上“单击”整数次来花费不超过 2566 个“点”。这是 Mathematica 中的答案:

In[8]:= Maximize[{72 n1 + 14 n2, n1 >= 0, n2 >= 0, 
  32 n1 + 10 n2 <= 2566}, {n1, n2}, Integers]

Out[8]= {5956, {n1 -> 80, n2 -> 0}}

或者,也许您需要花费2566点?那么你能做的最好的就是:

In[9]:= Maximize[{72 n1 + 14 n2, n1 >= 0, n2 >= 0, 
  32 n1 + 10 n2 == 2566}, {n1, n2}, Integers]

Out[9]= {5714, {n1 -> 78, n2 -> 7}}

这是你想要的吗?

于 2010-12-29T07:57:33.753 回答