bzoj 1747: [Usaco2005 open]Expedition 探险 贪心
2016-11-11 08:03
381 查看
题意
一群奶牛抢了一辆卡车决定前往树林里探险.但是由于它们的驾驶技术太糟,油箱在路上给弄破了,所以它们每前进一个单位的路程就会漏掉一个单位的油,为了修好油箱,奶牛们必须前往最近的城市(不会超过1000000单位路程).在当前位置和城市之间有N(1≤N≤10000)个加油站.奶牛可以在加油站加1到100单位的油.对于人来说,树林是个危险的地方,对奶牛来说,更是这样.所以,奶牛要尽可能的少停站加油.幸运的是,这辆卡车的油箱非常大,你可以认为它的容量是无穷大的.卡车在离城P(1≤P≤1000000)个单位时还有L个单位的油. 你要算出奶牛们至少要停几站才能到城市,或者奶牛们根本到不了城市分析
用优先队列维护经过的油站,如果到达不了某个地点则每次从优先队列中取出加油量最多的油站即可。代码
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<queue> #define N 1000005 using namespace std; priority_queue <int> q; int n,l,p; struct data{int dis,num;}a ; bool cmp(data a,data b) { return a.dis<b.dis; } int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d",&a[i].dis,&a[i].num); scanf("%d%d",&p,&l); for (int i=1;i<=n;i++) a[i].dis=p-a[i].dis; sort(a+1,a+n+1,cmp); a[++n].dis=p;a .num=0; int ans=0; for (int i=1;i<=n;i++) if (l>=a[i].dis) q.push(a[i].num); else { while (!q.empty()&&l<a[i].dis) { l+=q.top(); q.pop(); ans++; } if (l>=a[i].dis) q.push(a[i].num); } if (l>=p) printf("%d",ans); else printf("%d",-1); return 0; }
相关文章推荐
- bzoj1747[Usaco2005 open]Expedition 探险 优先队列+贪心
- bzoj 1689: [Usaco2005 Open] Muddy roads 泥泞的路【贪心】
- 【BZOJ】1689: [Usaco2005 Open] Muddy roads 泥泞的路(贪心)
- BZOJ1747 [Usaco2005 open]Expedition 探险
- BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- 【BZOJ】1680: [Usaco2005 Mar]Yogurt factory(贪心)
- BZOJ 1664 [Usaco2006 Open]County Fair Events 参加节日庆祝 贪心
- bzoj 1688 [Usaco2005 Open]Disease Manangement 疾病管理
- 【BZOJ4580】[Usaco2016 Open]248【区间DP】【或 贪心】
- 【bzoj1688】[Usaco2005 Open]Disease Manangement 疾病管理
- 【BZOJ 1572】 1572: [Usaco2009 Open]工作安排Job(贪心+优先队列)
- poj 2434;bzoj 1686 [Usaco2005 Open]Waves 波纹
- [BZOJ] 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- bzoj 1689: [Usaco2005 Open] Muddy roads 泥泞的路
- BZOJ1572: [Usaco2009 Open]工作安排Job 贪心
- BZOJ1688 [Usaco2005 Open]DiseaseManangement 疾病管理
- [BZOJ1572] [Usaco2009 Open]工作安排Job(贪心 + 堆)
- 【状压dp】【bitset】bzoj1688 [Usaco2005 Open]Disease Manangement 疾病管理
- bzoj 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛【二分+贪心】
- bzoj1572 [Usaco2009 Open]工作安排Job(贪心)