为啥总是waiting
查看原帖
为啥总是waiting
420229
Cyan_Sky楼主2021/4/25 22:00
#include<cstdio>
#include<stdlib.h>
#include<algorithm>
#include<queue>
using namespace std;
int n,l,p,t;
struct zhan{
	int a;
	int b;
}z[10005];
bool cmp(struct zhan x,struct zhan y){
	return x.a<y.a;
}
int main()
    {
    	scanf("%d",&t);
    	while(t--){
	    	priority_queue<int> que;
			scanf("%d",&n);
			for(int i=0;i<n;i++){
				scanf("%d %d",&z[i].a,&z[i].b);
			}
			scanf("%d %d",&l,&p);
			for(int i=0;i<n;i++){
				z[i].a=l-z[i].a;
			}
			sort(z+0,z+n,cmp);
			z[n].a=l;
			z[n].b=0;
			int ans=0,pos=0,tank=p,d,flag=0;
			for(int i=0;i<=n;i++){
				d=z[i].a-pos;
				
				//是否需要加油才能到达下一站,能否到达下一站 
				while((tank-d)<0){
					if(que.empty()){
						flag=1;
					}
					tank+=que.top();
					que.pop();
					ans++;
				}
				
				//到了下一站的操作 
				tank-=d;
				pos=z[i].a;
				que.push(z[i].b);
			}
			if(flag==0)
				printf("%d\n",ans);
			else
				printf("-1");
		}
    	
		return 0;
    }
/*
1
4
21 4
20 2
14 5
10 10
25 10
*/
2021/4/25 22:00
加载中...