202209-3 CCF 防疫大数据 满分题解(超详细讲解 + 注释代码) + 解题思路(STL模拟)

问题描述

在这里插入图片描述

解题思路

首先题意是给出n天的漫游信息以及n天的风险地区名单
求n天的风险人群

根据题意肯定要将漫游信息存储下来,用结构体数组比较合适
在判断该用户是否是风险人群时,需要判断[d1, d]区间内地点r是否是风险地区,所以需要把地点r的风险起始终止时间存储下来,可以采用map结合pair
并且开一个数组存储每天的风险人群答案,最后再排序去重输出
以下是我的数据结构,可参考,还有其他定义形式
在这里插入图片描述
然后就是读入每一天的漫游信息以及风险地区
当天就得出当天的风险人群
首先得到风险地区后,先更新每一个地区的风险时间段
在d天确认地点r为风险地区,那么目前r的风险终止时间一定会被更新成d + 6(未来7天内)
如果之前r不是风险地区或者d - 1天时已经不是风险地区,那么需要将r的风险起始时间更新为d,否则不更新
在这里插入图片描述

有了地区的风险时间段之后,就可以根据题目给出的条件判断这个用户是否是风险人群就可以了
在这里插入图片描述
对应的代码
在这里插入图片描述
最后将答案每一天依次输出,输出前进行编号的排序去重,存在重复的原因是因为漫游数据存在重复数据和多地访问数据
在这里插入图片描述


代码实现

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#include <vector>
#include <queue>

using namespace std;

struct node //存储漫游信息
{
    int day;
    int user;
    int address;
};

vector <node> alls[1010]; //存储每一天的有用的漫游信息
vector <int> res[1010]; //存储每一天的风险人群
unordered_map <int, pair <int, int>> A; //存储地点r的风险时间段
int n, r, m;

int main()
{
    scanf("%d", &n);

    for (int d = 0; d < n; d ++)
    {
        scanf("%d%d", &r, &m);
        for (int i = 0; i < r; i ++)
        {
            int x;
            scanf("%d", &x); //地点x在d天被确认为风险地区
            //如果x之前不是风险地区或者d-1天时x已经不是风险地区了
            if (A.count(x) == 0 || d - A[x].second > 1) A[x].first = d; //更新风险时间段的起点
            
            //更新风险时间的终点为 第 d + 6天
            A[x].second = d + 6;
        }

        for (int i = 0; i < m; i ++)
        {
            int d1, u, a;
            scanf("%d%d%d", &d1, &u, &a);
            //如果这天漫游信息中的地点不是风险地区或者当天已经不是风险地区或者是七天前的无效信息,则不需要保存
            if (A.count(a) == 0 || A[a].second < d || d1 < d - 6) continue;
            node t = {d1, u, a};
            alls[d].push_back(t); //存入当天的漫游信息
        }
        
        //处理[d-6, d]天中收到的有效漫游信息,得到风险人群
        for (int i = max(0, d - 6); i <= d; i ++)
        {
            for (int c = 0; c < alls[i].size(); c ++) //遍历第i天收到的漫游信息
            {
                int d1 = alls[i][c].day, u = alls[i][c].user, a = alls[i][c].address;
                //当前这个地区是风险地区
                //并且漫游信息是七天之内收到的漫游信息
                //并且[d1, d]这个时间段这个地区都是风险地区
                //则将这个人列入危险人群
                if (A.count(a) && d1 >= d - 6 && d1 >= A[a].first && d <= A[a].second) res[d].push_back(u);
            }
        }
    }

    for (int i = 0; i < n; i ++)
    {
        sort(res[i].begin(), res[i].end()); //排序
        //处理重复数据和多地点数据,可能一个人被列入多次
        res[i].erase(unique(res[i].begin(), res[i].end()), res[i].end());  //去重
        
        printf("%d", i);
        for (int j = 0; j < res[i].size(); j ++) printf(" %d", res[i][j]); //输出
        printf("\n");
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/2464.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA开发(自研项目的开发与推广)

https://live.csdn.net/v/284629 案例背景&#xff1a; 作为JAVA开发人员&#xff0c;我们可以开发无数多的web项目&#xff0c;电商系统&#xff0c;小程序&#xff0c;H5商城。有时候作为技术研发负责人&#xff0c;项目做成了有时候也需要对内进行内测&#xff0c;对外进行…

PHP+vue+elementUI高校食堂校园餐厅点餐系统

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 开发软件&#xff1a;hbuilderx/vscode/Dreamweaver/PhpSt…

项目管理工具哪个好?最新排名

项目管理工具当下已经成为项目团队的重要榜首&#xff0c;一款合适好用的项目管理工具可以帮助处理很多机械化工作&#xff0c;将管理者更多精力投入到更有价值的工作中&#xff0c;还可以帮助团队组织和计划项目&#xff0c;跟踪进度&#xff0c;处理预算和协作。该如何挑选帮…

什么是Vue

✅作者简介&#xff1a;CSDN一位小博主&#xff0c;正在学习前端&#xff0c;欢迎大家一起来交流学习&#x1f3c6; &#x1f4c3;个人主页&#xff1a;白月光777的CSDN博客 &#x1f525;系列专栏&#xff1a;Vue从入门到进阶 &#x1f4ac;个人格言&#xff1a;但行好事&…

【面试题】大厂面试官:你做过什么有亮点的项目吗?

大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库前言大厂面试中除了问常见的算法网络基础&#xff0c;和一些八股文手写体之外&#xff0c;经常出现的一个问题就是&#xff0c;你做过什么项目…

React--》状态管理工具—Mobx的讲解与使用

目录 Mobx的讲解与使用 Mobx环境配置 Mobx的基本使用 Mobx计算属性的使用 Mobx监听属性的使用 Mobx处理异步的使用 Mobx的模块化 Mobx的讲解与使用 Mobx是一个可以和React良好配合的集中状态管理工具&#xff0c;mobx和react的关系相当于vuex和vue之间的关系&#xff0…

膜拜!阿里自爆十万字Java面试手抄本,脉脉一周狂转50w/次

最近&#xff0c;一篇题为《阿里十万字Java面试手抄本》的文章在社交媒体平台上引起了广泛关注。这篇文章由一位阿里工程师整理了阿里Java面试的经验&#xff0c;并分享给了大家。这篇文章一经发布&#xff0c;就在短时间内获得了数十万的转发量&#xff0c;让许多Java程序员受…

Linux 网络编程学习笔记——四、HTTP 通信

目录 一、HTTP 代理服务器的工作原理 在 HTTP 通信链上&#xff0c;客户端和目标服务器之间通常存在某些中转代 理服务器&#xff0c;它们提供对目标资源的中转访问。一个 HTTP 请求可能被多个代理服务器转发&#xff0c;后面的服务器称为前面服务器的上游服务器。代理服务器…

基于OpenCV的人脸识别

目录 &#x1f969; 前言 &#x1f356; 环境使用 &#x1f356; 模块使用 &#x1f356; 模块介绍 &#x1f356; 模块安装问题: &#x1f969; OpenCV 简介 &#x1f356; 安装 OpenCV 模块 &#x1f969; OpenCV 基本使用 &#x1f356; 读取图片 &#x1f357; 【…

技术人的管理学-业务管理

主要内容前言制定计划遇到的问题&#xff1f;过程监控遇到的问题&#xff1f;复盘改进遇到的问题&#xff1f;通过PDCA循环解决业务管理问题总结前言 没有人天生就会管理&#xff0c;优秀的管理者都是在知行合一的过程中成长起来的&#xff0c;他们既需要系统的管理知识&#…

Java基础知识之Map的使用

一、Map介绍 Map是用于保存具有映射关系的数据集合&#xff0c;它具有双列存储的特点&#xff0c;即一次必须添加两个元素&#xff0c;即一组键值对><Key,Value>&#xff0c;其中Key的值不可重复&#xff08;当Key的值重复的时候&#xff0c;后面插入的对象会将之前插…

单片机中按键检测函数详细分析经典

​ 目录 一、如何进行按键检测 1.从裸机的角度分析 2.从OS的角度分析 二、最简单的按键检测程序 三、为什么要了解FIFO 四、什么是FIFO 五、按键FIFO的优点 六、按键 FIFO 的实现 1.定义结构体 2.将键值写入FIFO 3.从FIFO读出键值 4.按键检测程序 5.按键扫描 7.…

简易的html5视频播放倍速代码写法

HTML5视频标签有一个叫做playbackRate的属性&#xff0c;用于设置倍速播放。例如设置播放速度为2倍&#xff0c;可以写成&#xff1a; <video src"video.mp4" autoplay controls playbackRate"2"></video> 同时&#xff0c;可以使用JavaScri…

推荐 5 个好玩的 ChatGPT 开源应用

推荐 5 个基于 ChatGPT 的开源应用&#xff1a;基于强大的 GPT 大模型能力&#xff0c;看能开出什么好玩有趣实用的应用。本期推荐开源项目目录&#xff1a;1. 基于 OpenAI 的翻译应用2. 让 ChatGPT 支持图片3. 你的 AI 助手4. 可以与 ChatGPT 联动的智能音箱5. ChatGPT 快捷键…

【thingsboard】实现设备联动

本实验实现:通过在thingsboard中配置规则链和数据解析脚本,实现智能场景下的设备联动 点赞收藏,评论区获取原文 0.实验结果 描述:节点RAK3272模拟采集温度值,上传thingsboard平台;温度值大于32℃,控制节点LM401的led灯亮(模拟报警功能);温度值低于32℃,控制led灯灭(…

借助CatGPT让turtlesim小乌龟画曲线

注意这里是CatGPT&#xff0c;不等同OpenAI的ChatGPT&#xff0c;但是用起来十分方便&#xff0c;效果也还行。详细说明ROS机器人turtlesim绘制曲线需要注意哪些ROS机器人turtlesim绘制曲线需要注意以下几点&#xff1a;绘制曲线前需要设置好turtlesim的初始位置和方向&#xf…

【JUC进阶】从源码角度万字总结ReentrantLock与AQS

文章目录1. 什么是ReentrantLock2. AQS2.1 CLH队列3. ReentrantLock源码解析3.1 非公平锁 NonfairSync3.2 公平锁 FairSync3.3 解锁1. 什么是ReentrantLock ReentrantLock是一个互斥锁&#xff0c;能够实现共享数据做互斥同步&#xff0c;这样在同一个时刻保证了只有一个线程能…

iOS 紧急通知

一般通知 关于通知的各种配置和开发&#xff0c;可以参考推送通知教程&#xff1a;入门 – Kodeco&#xff0c;具有详细步骤。 紧急通知表现 紧急通知不受免打扰模式和静音模式约束。当紧急通知到达时&#xff0c;会有短暂提示音量和抖动&#xff08;约2s&#xff09;。未锁…

企业增长秘诀丨设立优质的帮助中心,加深用户产品使用深度,促进产品转化

客户的留存问题一直备受企业关注&#xff0c;留存率的高低反应了产品的真实状况&#xff0c;将直接影响企业后期的发展规划。下文将为大家剖析下产品中客户的转化流程&#xff0c;以及如何提高产品的使用深处与复购率。 产品中&#xff0c;从客户生命周期角度&#xff0c;可分…

ChatGPT和百度文心一言写用例,谁更强?

文心一言发布的第一时间&#xff0c;就排队申请了邀请码&#xff0c;昨晚看了下&#xff0c;邀请码已经到手&#xff0c;索性就拿一个例子试了一下&#xff0c;看看哪个能够真正意义上的提高生产力&#xff0c;最简单的录制了个GIF动画如下&#xff1a;问题&#xff1a;你是一个…