首页 > 其他 > 详细

POJ_2431 Expedition 【数据结构】

时间:2018-12-17 22:56:06      阅读:145      评论:0      收藏:0      [点我收藏+]

一、题面

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\n");
29                 return;
30             }
31             next = next - pq.top();
32             pq.pop();
33             ans++;
34         }
35         pq.push(Data[i].p);
36     }
37     printf("%d\n", 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 【数据结构】

原文:https://www.cnblogs.com/dybala21/p/10130849.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!