Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
各位大神,求助。。。(附本人代码,求指点)一直过不了,又找不出哪有问题,绝望。 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<iostream> #include<fstream> #include<iomanip> #include<ctime> #include<stack> #include<queue> #include<utility> #include<string> #include<cstring> using namespace std; struct station { int N1,N2; }NN[10001];//定义加油站。 bool cmp(const station &NN1,const station &NN2) { return NN1.N1<NN2.N1; } int main() { int N,L,P;//定义加油站个数,全程,起始油量。 scanf("%d",&N); int sum=0;//定义加油的次数且初始化。 for(int i=0;i<N;i++) scanf("%d%d",&NN[i].N1,&NN[i].N2); scanf("%d%d",&L,&P);//输入。 for(int n=0;n<N;n++) NN[n].N1=L-NN[n].N1; sort(NN,NN+N,cmp);//排序。 priority_queue<int>que;//经过且没加过的加油站。 int loc=0;//定义当前的位置且初始化。 int oil=P;//定义当前的汽油量且初始化。 for(int j=0;j<N;j++) { int spa=NN[j].N1-loc;//定义间隔距离。 while(oil<spa) { if(que.empty())//还没走到加油站,油就没了。 { puts("-1"); return 0;//结束。 } oil+=que.top();//补充汽油(最大)。 que.pop();//加过油的站作废。 sum++;//计数加一。 } oil-=spa;//减去消耗的汽油。 loc=NN[j].N1;//位置变化。 que.push(NN[j].N2);//经过的加油站加一。 } printf("%d\n",sum);//输出。 return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator