2019-G(外卖店优先级)

注意:注意时间复杂度方面的处理,尽量挑选有效的信息遍历,避免大量无效信息的遍历

#include <bits/stdc++.h>
using namespace std;

//朴素方法->枚举每一秒,然后枚举每一个店铺是否有订单--->超过相应的时间复杂度 
vector <int> q[100005];//每个店铺一个vector 
int ans=0;
int N,M,T;
int main(){
    cin>>N>>M>>T;
    while(M--){
        int ts,id;
        cin>>ts>>id;
        q[id].push_back(ts);
    }
    for(int i=1;i<=N;i++){
        sort(q[i].begin(),q[i].end());//对每一个店铺队列进行排序
        int last_time = 0,priority =0,ts;
        for(int order =0 ;order<q[i].size();order++){//对于每个店铺内的信息进行枚举
            ts = q[i][order];
            if(ts - last_time >=1)
                priority -= (ts - last_time -1);
            priority = max(0,priority);
            priority += 2;
            last_time = ts; 
        }
        priority -=(T-last_time);
        if(priority >5 || (priority ==5 && ts !=T)||(priority ==4 && ts<T-1))
        ans++;
    }
    cout<<ans;
    return 0;
} 

 

posted @ 2021-03-05 15:54  zmachine  阅读(94)  评论(0编辑  收藏  举报