每日一题冲刺大厂第十三天 海港

简介: 大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题这个月进度是数据结构,让大家练到各种各样的数据结构题目,熟悉数据结构的增删改查,一年以后,蜕变成为一个不一样的自己!

今日题目:海港


题目描述


小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。


小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第i艘到达的船,他记录了这艘船到达的时间ti (单位:秒),船上的乘 客数k_iki,以及每名乘客的国籍 xi,1,xi,2,…,xi,k。


小K统计了nn艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时=86400秒)内所有乘船到达的乘客来自多少个不同的国家。


形式化地讲,你需要计算nn条信息。对于输出的第ii条信息,你需要统计满足ti−86400


输入格式


第一行输入一个正整数nn,表示小K统计了nn艘船的信息。


接下来nn行,每行描述一艘船的信息:前两个整数t_iti和k_iki分别表示这艘船到达海港的时间和船上的乘客数量,接下来k_iki个整数x_{i,j}xi,j表示船上乘客的国籍。


保证输入的t_iti是递增的,单位是秒;表示从小K第一次上班开始计时,这艘船在第t_iti秒到达海港。


保证 1≤n≤105 ∑ki≤3∗105 ,10^51≤xi,j≤105,1≤ti−1≤ti≤109。


其中∑ki表示所有的ki的和。


输出格式


输出n行,第ii行输出一个整数表示第ii艘船到达后的统计信息。


题目分析


题目难度:⭐️⭐️⭐️


题目涉及算法:队列,模拟。


ps:有能力的小伙伴可以尝试优化自己的代码或者一题多解,这样能综合提升自己的算法能力


题解报告:


1.思路


直接队列模拟情况,再循环里面特殊判断一下时间的情况即可。


2.代码


#include<bits/stdc++.h>
using namespace std;
int n,t,m,x;
const int N = 1000005;
int a[N];
int ans; 
struct node{
    int s,t;
};
int main()
{
  queue<node>q;
  node h;
  cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>t>>m;
        while(q.size())
        {
            h = q.front();
            if(h.t+86400<=t)
            {
                a[h.s]--;
                if(a[h.s]==0)
        {
          ans--;
              }
        q.pop();
                continue;
            }
            break;
        }
        for(int j=1;j<=m;j++)
        {
            cin>>x;
            h.s = x,h.t = t;
            q.push(h);
            a[x]++;
            if(a[x]==1)
      {
        ans++;
          }
    }
        cout<<ans;
    }
    return 0;
}


目录
相关文章
|
机器学习/深度学习
评分是机器学习领域中的一种评估模型性能的指标
评分是机器学习领域中的一种评估模型性能的指标
280 1
|
Shell C语言 SoC
计基2—RISCV指令集介绍与汇编
计基2—RISCV指令集介绍与汇编
461 1
|
XML Java 数据库连接
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):XXXXX
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):XXXXX
233 1
|
机器学习/深度学习 并行计算 算法
YOLO算法
YOLO(You Only Look Once)是一种实时目标检测算法,将目标检测视为回归问题,通过单个CNN模型预测边界框和类别。YOLOv1使用24个卷积层和2个全连接层,将输入图像划分为7x7网格,每个网格预测2个边界框。模型直接从448x448图像输出7x7x30的张量,每个单元负责检测中心在其内的目标。YOLO训练涉及构造训练样本和损失函数,常采用预训练的Backbone(如CSPDarknet53)和数据增强技术。YOLOv4是YOLO系列的改进版,包括SPP和PANet等结构,提升了精度和速度,使用IOU损失函数,并采用CutMix和马赛克数据增强。
|
数据可视化
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
|
区块链
阿里云首款数字藏品 全网首发
为了无法计算的价值向先进科技致敬,阿里云首款数字藏品于2022年6月13日全网首发!限量10000份,免费领取!6月13日至6月26日,做任务得飞天5K纪念碑,更可免费抽iphone13!
6880 253
阿里云首款数字藏品 全网首发
|
JavaScript 前端开发
详解单文件组件
详解单文件组件
263 0
|
存储 Java
ThreadLocal 有什么用
ThreadLocal 有什么用
134 0
|
人工智能 计算机视觉 Ruby
CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识(二)
CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识(二)
856 0
|
C语言 C++ 容器
C++中queue的用法(超详细,入门必看)
⭐一、queue的简介 queue的中文译为队列,队列是一种数据结构。C语言中队列的定义及初始化以及一些相关操作实现起来较为繁琐,而C++的queue让这些都变得简便易实现。因为C++中有着许多关于queue的方法函数。 队列(queue)最大的特点就是先进先出。就是说先放入queue容器的元素一定是要先出队列之后,比它后进入队列的元素才能够出队列。 举个生活中的例子吧。
2768 0