求教,70分 6组mle
查看原帖
求教,70分 6组mle
537238
minazukiku楼主2022/12/3 15:44

#7~#11还有#13为什么是mle?下面是代码,写的有点乱,各位聚聚见谅

#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
struct chuanzhi{
    int t;
    int k;
    int guoji[100005];
};
int sygj[100005];//剩下乘客国籍
int cnt;
chuanzhi jin;
queue <chuanzhi> g;
int n;
int main(){
    memset(sygj,0,sizeof(sygj));
    scanf("%d",&n);
    scanf("%d%d",&jin.t,&jin.k);//录入第一艘信息
    for(int i=0;i<jin.k;i++){
        int w;
        scanf("%d",&w);
        jin.guoji[i]=w;
    }
    g.push(jin);//进港
    for(int i=0;i<jin.k;i++){//记录进来的国籍
        sygj[jin.guoji[i]]++;
    }
    cnt=0;
    for(int i=0;i<=100000;i++){//记录进来的国籍数量
       if(sygj[i]!=0){
          cnt++;
       }
    }
    printf("%d\n",cnt);
    n--;
    
    while(n--){
        scanf("%d%d",&jin.t,&jin.k);//录入第二艘信息
        for(int i=0;i<jin.k;i++){
            scanf("%d",&jin.guoji[i]);
        }
        while(!g.empty()&&g.front().t+86400<=jin.t){//队列非空并且超时
            for(int i=0;i<g.front().k;i++){
                int e=g.front().guoji[i];
                sygj[e]--;//国籍离开
                if(sygj[e]==0){//如果离开后没人了
                    cnt--;//总国籍-1;
                }
            }
            g.pop();
        }
        g.push(jin);
        for(int i=0;i<jin.k;i++){//记录进来的国籍
            if(sygj[jin.guoji[i]]==0){
                cnt++;
            }
            sygj[jin.guoji[i]]++;
        }
        printf("%d\n",cnt);
    }
}
2022/12/3 15:44
加载中...