2019省赛A组第7题

吐槽

题目

 

 解析

#include<bits/stdc++.h>
using namespace std;
const int N=100001;
struct node{int time,id;};
node a[N];
int order[N],prior[N],flag[N];

bool cmp(node a,node b)
{
    if(a.id==b.id){
        return a.time<b.time;
    }
    return a.id<b.id;
}
int main()
{

    int n,m,T;
    cin>>n>>m>>T;
    for(int i=0;i<m;i++){
        cin>>a[i].time>>a[i].id;
    }
    sort(a,a+m,cmp);
    /*此时订单序列按照id顺序排列,相同id之间是按时间排列*/
    for(int i=0;i<m;i++){
        int tt=a[i].time,id=a[i].id;
        if(tt!=order[id])//当前订单店不是上一家的
            prior[id]-=tt-order[id]-1;//每隔一个时间,优先级要减一
        prior[id]=prior[id]<0?0:prior[id];
        if(prior[id]<=3) flag[id]=0;//去除优先级队列
        prior[id]+=2;//有订单的店,每单加2
        if(prior[id]>5) flag[id]=1;
        order[id]=tt;
    }
     for(int i=1;i<=n;i++)  //最后处理第T时刻
        if(order[i]<T){
            prior[i] -= T-order[i];
            if(prior[i]<=3)
                flag[i]=0;
        }

    int ans=0;
    for(int i=0;i<=n;i++)
        if(flag[i])
            ans++;
    cout<<ans;
    return 0;
}

 

posted @ 2021-04-14 20:19  南理工学渣  阅读(27)  评论(0)    收藏  举报