| ||||||||||
| 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 | |||||||||
Re:各位大神,求助。。。(附本人代码,求指点)In Reply To:各位大神,求助。。。(附本人代码,求指点) Posted by:CXDZB at 2017-12-04 23:12:00 > 一直过不了,又找不出哪有问题,绝望。
> #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