星巴克咖啡排队的最小满意度问题的推导
f(i) = ai ( j - 1) + bi(n - j) = ai * j - ai + bi*n - bi*j = (ai - bi) * j + bi *n - ai = (ai - bi) * j + (bi - ai) * n + (n - 1) * ai = (ai - bi) * j - (ai - bi) * n + (n - 1) * ai = (ai - bi) * (j - n) + (n - 1) * ai
= detal * (j - n) + (n - 1) * ai
= detal * (j - C) + (C - 1) * ai
~= detal * j + k * ai
= j * detal[i] + k * ai
sum = f(1) + f(2) + ... + f(n) = detal[1] * 1 + detal[2] * 2 + detal[3] * 3 +... + detal[n] * n + k * (a1 + a2 + ... + an)----->【a1 + ... + an为常量】
问题:如何让两个数组对应位置的乘积之和最小?
答:一个按升序,一个按降序排列可最小
所以,detal数组应该按降序排列
= detal * (j - n) + (n - 1) * ai
= detal * (j - C) + (C - 1) * ai
~= detal * j + k * ai
= j * detal[i] + k * ai
sum = f(1) + f(2) + ... + f(n) = detal[1] * 1 + detal[2] * 2 + detal[3] * 3 +... + detal[n] * n + k * (a1 + a2 + ... + an)----->【a1 + ... + an为常量】
问题:如何让两个数组对应位置的乘积之和最小?
答:一个按升序,一个按降序排列可最小
所以,detal数组应该按降序排列

