10分求调
查看原帖
10分求调
1478385
c_h_a_o_s楼主2025/1/26 19:18

感觉我的思路和题解差不多但只有十分TAT,有没有好心人告诉我是哪里出了问题

#include<bits/stdc++.h>
using namespace std;
int N;
int main()
{
    cin >> N;
    set<long long>ddline;
    deque<array<long long,3>>build;
    priority_queue<long long>repair;
    priority_queue<long long,vector<long long>,greater<long long>>time;
    long long T=0;
    long long T1,T2;
    for(int i=1;i<=N;i++)
    {
        cin >> T1 >> T2;
        build.push_back({T2,T1,i});
        ddline.insert(T2);
    }
    sort(build.begin(),build.end());
    for(auto &ddl:ddline)
    {
        while(build.size())
        {
            auto &[d,t,id]=build.front();
            if(d<=ddl)
            {
                build.pop_front();
                time.push(t);
            }
            else break;
        }
        while(time.size())
        {
            long long t=time.top();
            if(T+t<=ddl)
            {
                T+=t;
                repair.push(t);
                time.pop();
            }
            else if(repair.size()&&t<repair.top())
            {
                T-=repair.top();
                time.pop();
                time.push(repair.top());
                repair.pop();
                repair.push(t);
                T+=t;
            }
            else break;
        }
    }
    
    cout << repair.size() << endl;
    return 0;
}
2025/1/26 19:18
加载中...