Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

各位大神,求助。。。(附本人代码,求指点)

Posted by CXDZB at 2017-12-04 23:12:00 on Problem 2431
一直过不了,又找不出哪有问题,绝望。
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator