POJ_2431 Expedition 数据结构

Posted dybala21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ_2431 Expedition 数据结构相关的知识,希望对你有一定的参考价值。

一、题面

POJ2431

二、分析

主要说几个坑

1.给出的点需要根据下标排序。

2.根据不同的方式要把起始点或者终点加进去。我没有转换距离,而是直接从起始点到终点根据距离不断相减判断的,那么起点就是25,所以要把终点0加进去。如果转换距离的话,终点就是相对于出发点25。这个根据个人选择。

三、AC代码

技术分享图片
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <queue>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 struct Node
 8 {
 9     int l, p;
10     bool operator<(const Node t)const
11     {
12         return l > t.l;
13     }
14 }Data[10003];
15 int N, L, P;
16 
17 void solve()
18 {
19     int ans = 0, next = L-P;
20     priority_queue<int> pq;
21     
22     for(int i = 0; i < N; i++)
23     {
24         while(Data[i].l < next)
25         {
26             if(pq.empty())
27             {
28                 printf("-1
");
29                 return;
30             }
31             next = next - pq.top();
32             pq.pop();
33             ans++;
34         }
35         pq.push(Data[i].p);
36     }
37     printf("%d
", ans);
38 }
39 int main()
40 {
41     // freopen("input.txt", "r", stdin);
42     // freopen("out.txt", "w", stdout);
43     while(scanf("%d", &N)!=EOF)
44     {
45         for(int i = 0; i < N; i++)
46         {
47             scanf("%d %d", &Data[i].l, &Data[i].p);
48         }
49         scanf("%d %d", &L, &P);
50         Data[N].l = 0, Data[N].p = 0;
51         N++;
52         sort(Data, Data+N);
53         solve();
54     }
55     return 0;
56 }
View Code

 

以上是关于POJ_2431 Expedition 数据结构的主要内容,如果未能解决你的问题,请参考以下文章

POJ 2431 Expedition(探险)

poj 2431 Expedition

POJ2431--Expedition(优先队列)

poj 2431Expedition

poj 2431 Expedition

poj2431Expedition