POJ 2431 Экспедиция очередь жадного приоритета

экспедиция
Лимит времени:  1000 мс   Ограничение памяти:  65536K
Всего Материалы:  30702   Принято:  8457

Описание

Группа коров схватила грузовик и отважилась на Глубокой экспедицию в джунгли. Будучи довольно бедных водителей, коровы , к сожалению , удалось бежать через скалу и проткнуть топливный бак грузовика. Грузовик в настоящее время утечки на одну единицу топлива каждую единицу расстояния он перемещается. 

Для того, чтобы отремонтировать машину, коров нужно , чтобы добраться до ближайшего города (не более 1000000 единиц отдаленного) по длинной, извилистой дороге. На этом пути, между городом и текущим местоположением грузовика, есть N (1 <= N <= 10000) топлива останавливается , где коровы могут остановить , чтобы приобрести дополнительное топливо (1..100 единиц на каждой остановке). 

Джунгли является опасной для жизни людей , и особенно опасно для коров. Таким образом, коровы хотят , чтобы сделать минимально возможное количество остановок для топлива на пути к городу. К счастью, емкость топливного бака на их грузовике настолько велика , что не существует эффективное никаких ограничений на количество топлива , он может содержать. Грузовик в настоящее время L единиц от города и имеет P единицы топлива (1 <= p <= 1 миллион). 

Определить минимальное количество остановок , необходимых для достижения города, или если коровы не может добраться до центра города на всех. 

вход

* Строка 1: Одно целое число, N 

* Линии 2..N + 1: Каждая строка содержит два целых числа , характеризующие топливную остановку: Первое число является расстоянием от города до остановки; во - вторых, количество топлива , доступны на этой остановке. 

* Строка N + 2: Два пробела целых числа, L и Р

Выход

* Строка 1: Одно целое число дает минимальное количество топлива останавливается необходимо добраться до города. Если это не возможно добраться до города, выход -1.

Пример ввода

4 
4 4 
5 2 
11 5 
15 10 
25 10

Пример вывода

2

намек

ВХОД ДЕТАЛИ: 

Грузовик 25 единиц от города; грузовик имеет 10 единиц топлива. Вдоль дороги, есть 4 остановки топлива на расстояниях 4, 5, 11 и 15 от города (так что они изначально на расстояниях 21, 20, 14 и 10 из грузовика). Эти топливные остановки могут поставить до 4, 2, 5 и 10 единиц топлива, соответственно. 

OUTPUT ОПИСАНИЕ: 

Привод 10 единиц, остановка , чтобы приобрести еще 10 единиц топлива, привод 4 больше единицы, остановку , чтобы приобрести больше 5 единиц топлива, а затем доехать до города.

Источник

 
1 #include <cstdio>
 2 #include <iostream>
 3 # include <очереди>
 4 #include <алгоритм>
 5  
6 с  использованием  пространства имен STD;
7  
8  Const  INT max_n = 1E4 + 2 ;
9  Const  INT max_L = 1E6;
10  Const  INT max_P = 1E6;
11  Const  INT max_A = max_L;
12  Const  INT max_B = 100 ;
13  
14  INT N, L, P;
15 INT A [max_n], В [max_n];
 16  
. 17 ЬурейеЕ STRUCT узел
 18  {
 19.      INT A, B,
 20  };
 21  узел Узел [max_n];
 22  
23  
24  BOOL CMP (узел А, узел В)
 25  {
 26      возврата АА < в;
 27  }
 28  
29  аннулируются решить ()
 30  {
 31      // для удобства, будет рассматриваться как конечные станции 
32      узлов [п] II.A = L;
 33      Узел [п] .B = 0 ;
 34      ++n-;
 35  
36      // массив отсортированных по расстоянию
 37      @ вредят мне белую бумагу, что я не нужно сортировать, сумасшедший WA 
38 является      Sort (Node, узел + n-, СМР);
 39  
40  //     для (INT I = 0; I <н-, я ++)
 , 41  //     {
 42  //         COUT << Узел [I] II.A << '' << Узел [I] .B << епсИ;
 43  //     } 
44  
45      INT АНС = 0 ;
 46  
47      // масло определяет очереди максимального приоритета могут достичь места хранения 
48      priority_queue < INT > кучного;
 49  
50      для ( INT I =0 ; я <п; ++ I)
 , 51      {
 52          // ток до конца, выходит из цикла 
53          ПЧ (Р> = L)
 , 54          {
 55              ПАУЗА ;
 56          }
 57          // в данный момент недоступен пункт 
58          это время (Р < Узел [I] II.A)
 59          {
 60              // дозаправки, или не опустошить вплоть до 
61              ПЧ (heap.empty ())
 62              {
 63                  на пут ( " -1 " );
 64                  возврата ;
 65              }
 66             ++ АНС;
 67              Р = + heap.top ();
 68              heap.pop ();
 69          }
 70  
71          // этот момент до текущей точки добавляется в стек 
72          heap.push (Node [I] .B);
 73      }
 74  
75      Е ( " % D \ n- " , АНС);
 76  }
 77  
78  INT основных ()
 79  {
 80      Scanf ( " % D " , & п);
 81      INT ДИС, топлива;
 82      для ( INTI = 0 ; я <п; ++ я)
 83      {
 84          зсапЕ ( " % d% d " , & дис, и топлива);
85          узел [I] .а = дис;
86          узла [я] .b = топливо;
87      }
 88  
89      зсапЕ ( " % d% d " , & l, & Р);
90  
91      для ( Int I = 0 ; я <п; ++ я)
 92      {
 93          узла [I] .а = L - узел [I] .a;
94      }
 95      решения ();
96      возврата  0 ;
97 }

 

 

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

отwww.cnblogs.com/jishuren/p/12264510.html
рекомендация