求助
查看原帖
求助
138960
Tenshi楼主2021/1/8 16:29

自己找不出哪里有问题,希望dalao可以帮忙看看orz

#include<bits/stdc++.h>
using namespace std;
#define SET0(a) memset(a,0,sizeof(a))
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define DWN(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long ll;
const int N=1e4+5;
int T;
int n;
int L,P;
struct node{
    int d,p;
}a[N];
int cur_P,ans;
priority_queue<int> que;

bool cmp(node u,node v){
    return u.d<v.d; 
}
void scan(){
    cin>>n;
    FOR(i,1,n) cin>>a[i].d>>a[i].p;
    cin>>L>>P;
}
void pre(){
    a[0].d=0;
    a[n+1].d=L;
    FOR(i,1,n) a[i].d=L-a[i].d;
    sort(a,a+1+n+1,cmp); // 0--n+1

    cur_P=P; //current fuel
    ans=0;
}
void solve(){
    FOR(i,1,n+1){
        int dis=a[i].d-a[i-1].d;

        while(cur_P<dis){
            if(que.empty()){
                cout<<-1<<endl;
                return;
            }
            cur_P+=que.top();
            que.pop();
            ans++;
        }

        cur_P-=dis;
        que.push(a[i].p);
    }
    cout<<ans<<endl;
}
int main(){
    cin>>T;
    while(T--){
        scan();
        pre();
        solve();
    }
    
    return 0;
}
2021/1/8 16:29
加载中...