POJ-3258 River Hopscotch

Каждый год корова провести мероприятие с участием своеобразной версии классиков , которая включает в себя тщательно прыгать с камня на камень в реке. Возбуждение происходит на длинной прямой реке с камнем в начале и другой породы в конце, L единиц расстояние от начала (1 ≤ L ≤ 1 млрд). Вдоль реки между начальной и конечными породами, N (0 ≤ N ≤ 50000) появляется более порода, каждый на интегральном расстоянии D я с самого начала (0 < D я < L ).

Для того, чтобы играть в игру, каждая корова в свою очередь, начинается с начальной скалы и пытается добраться до финиша в финале скалы, прыжки только с камня на камень. Конечно, менее проворные коровы никогда не делают его окончательного рок, в конечном итоге вместо того, чтобы в реке.

Фермер Джон гордится своими коровами и часы это событие каждый год. Но , как проходит время, он устает смотреть робкие коров других фермеров хромать через короткие расстояния между скал , расположенных слишком близко друг к другу. Он планирует снять несколько пород с целью повышения кратчайшего расстояния коровы придется прыгать , чтобы дойти до конца. Он знает , что он не может удалить начальный и конечные скалы, но он рассчитывает , что он имеет достаточно ресурсов , чтобы удалить до М пород (0 ≤ MN ).

FJ хочет точно знать , сколько он может увеличить кратчайшее расстояние * до * он начинает извлекать камни. Помощь Farmer John определить максимально возможное кратчайшее расстояние коровы имеет прыгать после удаления оптимального набора М пород.

вход
Строка 1: Три целых число через пробел: L , N и М
Линия 2 .. N + 1: Каждая строка содержит одно целое число , указывающее , насколько далеко некоторые породы находятся далека от исходной породы. Никакие две породы не разделяют ту же позицию.
Выход
Строка 1: Одно целое число , которое является максимальным кратчайшего расстояния корова должна прыгать после удаления M пород
Пример ввода
5 2 25 
2 
14 
11 
21 
17
Пример вывода
4
намек
Перед удалением любых пород, самый короткий прыжок был скачок 2 от 0 (начало) до 2. После удаления породы при температуре от 2 до 14 лет, самый короткий требуется скачок скачок 4 (от 17 до 21 или от 21 до 25 ).

OJ-ID:
POJ-3258

Автор:
Caution_X

Дата представления:
20,191,017

Тэгов:
бинарное

моделирование Описания:
река с м камнем, каждый камень положение [я] (а [0 ] = 0, а [т +-] = п // п длина реки), извлекали из K камней, чтобы максимизировать минимальное значение между двумя камнями

Основные шаги , чтобы решить эту проблему:
1. перечислить половину минимального расстояния между камнями, чтобы достичь этой минимальной статистики количество камней , необходимых для удаления значения
2. Если число камней <= к, все это минимальное расстояние может быть больше, в противном случае объяснить это минимальное расстояние слишком большие


предупреждения:
не означает , что это минимальное расстояние , когда количество камней == к оптимальному решение

код AC:

#include <iostream> 
#include <алгоритм>
 с помощью  пространства имен STD;
Int а [ 50005 ];
INT основных () 
{ 
    INT п, т, к; 
    CIN >> п >> т >> к; 
    а [ 0 ] = 0 ; 
    а [т + 1 ] = N;
    INT L = N;
    для ( INT I = 1 ; я <= т; я ++ ) { 
        CIN >> а [I]; 
        L = мин (л, а [я] -a [i - 1 ]); 
    } 
    л= мин (л, а [М + 1 ] - а [м]);
    INT R = N; 
    рода (а, а + M + 2 );
    в то время как (L <= R) {
         INT среднего = (L + R) / 2 ;
        INT сумма = 0 , Delet = 0 ;
        для ( INT I = 1 ; г <= т + 1 ;) { 
            сумма + = а [я] -a [i - 1 ];
            если (сумма <= середина) { 
                я ++ ;    
                Delet ++ ;
            }
            еще { 
                я ++ ; 
                сумма = 0 ; 
            } 
        } 
        Если (Delet <= к) { 
            L = середина + 1 ; 
        } 
        Иначе { 
            R = середина 1 ; 
        } 
    } 
    СоиЬ << L << епсИ;
    вернуться  0 ; 
}

 

рекомендация

отwww.cnblogs.com/cautx/p/11716493.html