ДОБРЕ. Алгоритм DP здається надмірно складним. Прочитавши коментарі, я думаю, що це може вирішити монотонну версію проблеми (але я не перевіряв кожну деталь).
Спочатку припустимо, що кожен , де є невід'ємною частиною, - дробова частина. Припустимо, що округляється до , де - це негативне ціле число (звичайно, може бути негативним, але ми завжди можемо зміщуватися так, що найменший дорівнює 0).⌊ x i ⌋ { x i } xxi=⌊xi⌋+{xi}⌊xi⌋{xi} ⌊ x i ⌋ + v i v i v i v i vxi⌊xi⌋+vivivivi
А тепер врахуйте вартість пари , коли робите це округлення. Вартість повинна бутиx jxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
Вираз складний через абсолютні значення. Однак зауважте, що ми маємо монотонність, тому речі, що знаходяться у двох внутрішніх абсолютних значеннях, повинні мати знак САМО. Оскільки у нас є зовнішнє абсолютне значення, воно насправді не має значення, що це за знак, вираз просто спрощується
|vi−vj−({xi}−{xj})|
Відтепер ми не вважаємо, що рішення є монотонним, але замість цього ми змінюємо ціль, щоб мінімізувати суму вищевказаного члена для всіх пар. Якщо рішення цієї проблеми буде монотонним, то, звичайно, це також є оптимальним рішенням для монотонної версії. (Подумайте про це як: оригінальна проблема має нескінченне покарання, коли рішення не є монотонним; нова проблема має менший штраф, якщо монотонне рішення перемагає навіть у новій версії, воно повинно бути рішенням монотонної версії)
Тепер ми хотіли б довести, якщо , в оптимальному рішенні ми повинні мати .v i ≥ v j{xi}>{xj}vi≥vj
Припустимо, це неправда, що у нас є пара але . Ми покажемо, що якщо ми рішення стає суворо кращим.v i < v j v i v j{xi}>{xj}vi<vjvi vj
Спочатку ми порівнюємо термін між та , тут дійсно зрозуміло, що заміна строго краща, тому що у версії без swap і мають однаковий знак, абсолютний значення буде сумою двох абсолютних значень.iv i - v j { x j } - { x i }jvi−vj{xj}−{xi}
Тепер для будь-якого порівняємо суму пар та . Тобто нам потрібно порівняти( i , k ) ( j , k )k(i,k)(j,k)
||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|і.|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
Використання , , , , щоб позначити чотири умови всередині абсолютного значення, то ясно , що . Також зрозуміло, що. За опуклістю абсолютної величини ми знаємо. Візьміть суму за всі , ми знаємо, що обмін може бути тільки кращим.B C D A + B = C + D | А - В | ≥ | C - D | | А | + | Б | ≥ | C | + | Д | х кABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xk
Зауважте, що зараз у нас вже є рішення для монотонної версії підлога / стеля: повинен бути поріг, коли більший завжди округлий, коли менший завжди округлий, коли він дорівнює круговому деякий вгору і деякі знижуються, тоді як якість рішення залежить лише від кількості. Перерахуємо всі ці рішення і виберемо той, з найменшою цільовою функцією. (Усі ці рішення обов'язково є монотонними).{xi}
Нарешті, ми хотіли б перейти до одноманітної цілої версії проблеми. Насправді ми можемо довести, що оптимальне рішення таке саме, як і монотонна версія для підлоги / стелі.
Як ми припускали, найменший дорівнює 0. всі відповідно до їх і назвіть їх групи . Спершу доведемо, що порожніх груп немає, але це просто, якщо -та група порожня, для будь-якого просто нехай . Легко бачити, що цільова функція завжди вдосконалюється (в основному тому, що ).х я v я 0 , 1 , 2 , . . . , max { v i } k v i > k v i = v ivixivi0,1,2,...,max{vi}kvi>k| { x i } - { x j } | < 1vi=vi−1|{xi}−{xj}|<1
Тепер доведемо, що середнє значення у групі становить щонайменше середнє значення у групі плюс . Якщо це неправда, просто нехай для всіх , обчислення знову показує, що цільова функція покращується.k + 1 { x i } k 1{xi}k+1{xi}kv я = v я - 1 V я > до1/2vi=vi−1vi>k
Оскільки середнє значення знаходиться в інтервалі , дійсно існує максимум дві групи, що відповідає версії підлога / стеля.[ 0 , 1 ){xi}[0,1)