How To Find the minimum value of the expression below:
SUM(|x - A[i]|*B[i]), i >= 0 and i < N, B[i] > 0
When B[i] = 1 I know the answer is given by x = Median(A).How to calculate x when B itself varies.
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3603 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | dXqwq | 3436 |
| 8 | Radewoosh | 3415 |
| 9 | Otomachi_Una | 3413 |
| 10 | Um_nik | 3376 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | adamant | 152 |
| 3 | Proof_by_QED | 146 |
| 3 | Um_nik | 146 |
| 5 | Dominater069 | 144 |
| 6 | errorgorn | 141 |
| 7 | cry | 139 |
| 8 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 9 | TheScrasse | 134 |
How To Find the minimum value of the expression below:
SUM(|x - A[i]|*B[i]), i >= 0 and i < N, B[i] > 0
When B[i] = 1 I know the answer is given by x = Median(A).How to calculate x when B itself varies.
| Name |
|---|



Another way to think about this is to imagine you have a new array $$$A'$$$ such that it has element $$$A_i$$$ repeated $$$B_i$$$ times in it. Now it is easy to see that the answer to your problem for $$$A'$$$ and $$$B'_i = 1$$$ will be the same as the one for $$$(A, B)$$$. This means that we can simply find the median of $$$A'$$$.
To do this fast, we sort the pairs $$$(A_i, B_i)$$$ by $$$A$$$, then we find the sum of all $$$B_i$$$ and go from the beginning while the prefix sum of $$$2 * B_i \lt SumB$$$. The last $$$A$$$ we have went through will be our answer.
Thanks for the explanation :)
Can anybody prove the median thing if B[i] = 1?
The function $$$f(x) = \sum_{i = 1}^{n} |x - a_i| $$$ is a piecwise linear function, meaning that it can be broken into straight lines, and changes slope at breakpoints $$$a_i$$$'s, which confirms that minimum is achieved at one of $$$a_i$$$'s. Now as you move from $$$-\infty$$$ to $$$+\infty$$$ slope changes from $$$-n$$$ to $$$n$$$, and is $$$0$$$ at median (when exactly half terms contribute +1 to slope and other half -1)
How can you assume the slope changes from -n to n? A[i] values can be anything
Ok thanks