首页 > 其他 > 详细

2019省赛A组第7题

时间:2021-04-14 23:49:15      阅读:26      评论:0      收藏:0      [点我收藏+]

吐槽

题目

技术分享图片

 

 解析

#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;
}

 

2019省赛A组第7题

原文:https://www.cnblogs.com/lvjt0208/p/14659700.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!