202209-3 CCF 防疫大数据 满分题解(超详细讲解 + 注释代码) + 解题思路(STL模拟)
创始人
2025-06-01 20:54:40
0

问题描述

在这里插入图片描述

解题思路

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

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

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


代码实现

#include 
#include 
#include 
#include 
#include 
#include using namespace std;struct node //存储漫游信息
{int day;int user;int address;
};vector  alls[1010]; //存储每一天的有用的漫游信息
vector  res[1010]; //存储每一天的风险人群
unordered_map > 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;
}

相关内容

热门资讯

监管出手,戳破千亿外卖大战的泡... 文 | 一刻商业,作者 | 燕辞格,编辑 | 以安 史无前例的数字正诞生在外卖行业,但对行业的冲击...
和讯投顾高璐明:放量上攻!向上... 超过3500只个股上涨,三大指数集体放量上攻,市场向上变盘了吗?我们当下到底应该怎么办?和讯投顾高璐...
财务造假长达6年,多名高管被追... 记者丨崔文静 实习生 张长荣 编辑丨黄剑 2023年以来,金通灵财务造假案备受市场关注。继2024年...
券商回购潮显效!红塔证券1-2... 券商股回购阵营再添新军。7月17日,《红塔证券关于以集中竞价方式回购股份的方案》引起投资人关注,公司...
武汉贷款公司急用钱最新实战融资... 信用优化实战技巧 当我们真的急用钱,在武汉寻找靠谱的贷款公司时,一个漂亮的信用报告绝对是我们的超级加...
超大规模市场体量更大(权威发布... 数据来源:商务部 国务院新闻办7月18日举行“高质量完成‘十四五’规划”系列主题新闻发布会,介绍“十...
成都温江“玩啤消夏·2025温... 7月18日,“玩啤消夏·2025温江啤酒美食季暨温江第四届青岛啤酒节”在成都市温江光华公园下穿隧道上...
著名相声演员杨少华遗产4个亿?... 极目新闻记者 付瞰 著名相声演员杨少华7月9日去世,享年94岁。7月18日,有媒体报道称,杨少华的儿...
摩根大通拓展非上市企业研究,首... 摩根大通正将其研究版图扩展至非上市企业领域,以抢占高增长赛道的先发优势。据知情人士透露,该行全球研究...
第一、第二、前三……蓄势赋能!... 央视网消息:国务院新闻办公室7月18日举行“高质量完成‘十四五’规划”系列主题新闻发布会,商务部相关...
雨一直下,酒一直喝!昨夜松江啤... 昨晚,伴随着一场倾盆大雨,“上海之夏”国际消费季松江活动正式拉开帷幕。作为系列活动的标杆活动——上海...
学会储蓄,坐收“渔”利 真正的财富秘密,往往藏在那些看似不起眼的‘小钱’里。就像渔民养鱼,每天投点饲料,耐心等待,终有一天能...
原创 中... 轰隆!三百多块手机屏幕大小的特种合金钢板,在这台庞然大物的怀抱中被瞬间“揉捏”成型,高温下金属变形的...
京东外卖推出一站式政企用餐解决... 上证报中国证券网讯(记者 刘暄)上海证券报记者7月18日从京东获悉,为满足员工多元化用餐需求,京东外...
四闯IPO终获港股备案,八马茶... 八马茶业股份有限公司(以下简称“八马茶业”)的资本化之路迎来关键节点。7月17日,中国证监会向其发放...
三部加密货币法案获美国众议院通... 美国首部稳定币立法《GENIUS 法案》此前已在参议院通过,如获得特朗普签字批准,将成为一项重要的加...
原创 巴... 一场关乎全球航运格局的博弈正在巴拿马运河上演。价值228亿美元的巴拿马港口交易,因中国坚决要求中远海...
中国资产大爆发!多股大涨10% 中国资产再大涨! 北京时间7月18日晚间,美股开盘后,中国资产集体爆发,纳斯达克中国金龙指数直线拉升...
原创 我... 当美国总统特朗普挥舞关税大棒时,他可能没想到,第一个被砸得粉碎的不是中国、欧盟或墨西哥,而是一个人口...
观察|临港前沿产业快速发展背后... 2023年6月,临港新片区设立“上海金融租赁服务集成电路产业实验室”,支持交银金租、招银金租、浦银金...