好的,这是交易。我有一堆线性函数,a * x + b。
我的目标是回答以下问题/查询:x = q 处的最小函数是什么?
例如:如果我有函数 f(x) = 3*x + 2、g(x) = 5*x - 6 和 h(x) = 2*x + 1,我将回答例如:
对于 x = 4,函数 h
对于 x = 2,函数 g
对于 x = 1,函数 g
我的想法是这样的:
按 x 的系数对函数进行降序排序。
按升序对查询进行排序
摆脱并行函数,保留具有最小常数项的函数(例如:如果我有 f(x) = 2*x + 4 和 g(x) = 2*x + 2,f(x) 将永远不会小于 g(x),所以我不需要 f(x))。
现在我在从-inf到某个实数的区间上,称之为w1,我知道在这个区间上,线性系数最高的函数是最小的
通过找到最小的 x1 st f(x1) = g(x1) 来找到 w1,其中 f 是我当前的函数,g 以较小的线性系数遍历所有其他函数,w1 = x1
只要我的查询在区间 (-inf, w1) 内就重复:输出当前函数,然后继续下一个查询。
如果我仍然有需要回答的查询,让当前函数与我的实际当前函数在 x = w1 处相交,而不是 -inf put w1,重复相同的步骤。
但是,我的实现或想法还不够快。有什么我没有注意到的可以加快我的程序的吗?
先感谢您。