17 LCA模拟赛1T2 剧院始于演员 题解

news/2025/10/5 17:42:09/文章来源:https://www.cnblogs.com/michaele/p/19126778

剧院始于演员

题面

\(n\) 个演员,共 \(m\) 场演出,每场演出会给出这场演出的演员名单,共 \(k_i\) 个姓名

对于每个演员,求最早在哪一场演出结束后能够确定其对应姓名?

\(1 \le n , m \le 10^5, \sum k_i \le 10^5\)

题解

可以发现,两个演员能够区分当且仅当某场演出中,一个演员出现,一个演员不出现

所以想要让某个演员和其他演员都区分开,那这个演员在每场的演出情况一定和其他演员不同,所以我们可以记录每个演员在前面场次的出现情况,记录一个状态

如果某个演员的状态和其他演员都不同,那么就能够确定这个演员的姓名

考虑如何实现?

我们可以对状态进行哈希,以区分出现和不出现

对每个哈希值,我们需要知道其对应了多少个演员,并且要快速的插入演员,删除演员,所以可以对每个哈希值维护一个 set ,用 map 来维护 哈希值与 set 的对应关系

但还没完,在每场演出结束后,我们还需要快速获取到大小为 1 的演员集合,并将对应的哈希值从 map 里删除,我们可以用另一个 set 来维护 集合大小和对应哈希值

那么这道题就做完了,时间复杂度 \(O(n \log n)\)

code

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <random>
#include <ctime>
#include <unordered_map>
#include <set>using namespace std;typedef unsigned long long ull;void close_stream () {ios :: sync_with_stdio (0);cin.tie (0);cout.tie (0);
}namespace solution_b {const int N = 1e5 + 10;int n, m, ans[N];ull hash[N];unordered_map <ull, set <int> > mp;set <pair <int, ull> > st;mt19937_64 rng (time (0));void solve () {close_stream ();cin >> n >> m;st.emplace (n, 0);for (int i = 1; i <= n; i ++) {mp[0].emplace (i);}for (int i = 1; i <= m; i ++) {int cnt, x;cin >> cnt;ull tmp = rng ();for (int j = 1; j <= cnt; j ++) {cin >> x;if (ans[x]) continue;// 取出当前演员st.erase ({mp[hash[x]].size (), hash[x]});mp[hash[x]].erase (x);if (mp[hash[x]].size () == 0) mp.erase (hash[x]);else st.emplace (mp[hash[x]].size (), hash[x]);hash[x] ^= tmp;// 再将其插入st.erase ({mp[hash[x]].size (), hash[x]});mp[hash[x]].emplace (x);st.emplace (mp[hash[x]].size (), hash[x]);}for (auto it = st.begin (); it != st.end (); it ++) {int siz = it->first;ull val = it->second;if (siz > 1) break;ans[*mp[val].begin ()] = i;mp.erase (val);                }while (st.size () && st.begin()->first == 1) {st.erase (st.begin ());}}for (int i = 1; i <= n; i ++) {cout << ans[i] << ' ';}cout << '\n';}
}int main () {solution_b :: solve ();return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

岳阳网站建设收费标准做货运网站找哪家好

k8s-集群部署1 一、基础环境准备二、docker环境准备三、k8s集群部署1.kubeadm创建集群2.使用kubeadm引导集群 总结 一、基础环境准备 首先&#xff0c;需要准备三个服务器实例&#xff0c;这里我使用了阿里云创建了三个实例&#xff0c;如果不想花钱&#xff0c;也可以在VM上创…

3 2025 04 23 模拟赛总结

成绩表 ![[12 题解/photo/Pasted image 20250423183537.png]]做题情况T1:看了十分钟没什么思路,后来打表找到了一点规律,但是没写对(可能是因为细节太多)0pts T2:这个题看起来唬人,实际不难,想了大概20分钟,后…

14 收心赛3 T1 最长不降子序列 题解

最长不降子序列 题面 小 W 有一个长度为 \(n\) 的序列 \(a_1, a_2 ...a_n\) ,且 \(a_i\) 的取值都为 1 或 2 现在,你可以任意选择该序列的一个区间进行翻转操作,但你只能翻转一次。 小 W 希望执行操作之后,整个序列…

16 LCA模拟赛1T1 密码 题解

密码 题面 给定两个由字符 \(0 \sim 9\) 组成的字符串 \(s, t\) ,\(t\) 是由 \(s\) 中的一段非空连续子串替换为其各个字符的和得到的 现在要求这一段非空连续子串的左右端点,下标从 1 开始 例如 input: 2148 213 ou…

幼儿做爰网站网站建设前的市场分析

酒吧学DJ打碟他有很多种的说法&#xff0c;有些酒吧他是自己招学生&#xff0c;当这样的酒吧在现今是挺少的&#xff0c;也有&#xff0c;但要求很高。还有一种就是说你自己在酒吧里上班的人自己招私人徒弟什么的&#xff0c;那也是就学DJ打碟&#xff0c;那一搬酒吧都是怎么学…

吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(一)

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

阿里开源规则引擎QLExpress

阿里开源规则引擎QLExpress阿里开源规则引擎QLExpress:彻底告别业务规则硬编码动态脚本解析利器,让业务规则变得灵活可配置在当今快速变化的业务环境中,如何高效灵活地处理频繁变动的业务规则成为了每个开发者面临的…

QOJ7411 Bitwise Xor

内部通道(jzyz P6035),与原题唯一不同在于一个也不选也算一种方案。 首先挖掘性质。将\(a_i\)从小到大排序后,\(a_i\oplus a_j\)的最小值一定在某一对相邻\(a_i\),即\(a_i\oplus a_{i+1}\)处取到。 简易证明:排过…

完整教程:SOC-ESP32S3部分:25-HTTP请求

完整教程:SOC-ESP32S3部分:25-HTTP请求pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

为什么要采用“接口 - 抽象类 - 实现类”这种三层结构? - 浪矢

目录核心思想各层职责与优势第一层:接口 (Interface) - 负责“定义契约”,实现“解耦”第二层:抽象类 (Abstract Class) - 负责“封装通用”,实现“复用”第三层:实现类 (Implementation Class) - 负责“具体业务…

对外提供 AI 服务的风险:合规视角与 AI 安全围栏落地指南

对外提供人工智能服务,主要风险集中在提示词攻击与越权操控、不当内容输出与内容合规、敏感信息与个人信息泄露,以及算法合规、备案与可审计义务。自2023年《生成式人工智能服务管理暂行办法》实施后,企业需要把“数…

遵义市做网站设计公司苏州关键词优化排名推广

本文转载自&#xff1a;http://blog.sina.com.cn/s/blog_9a06890901014ol1.html PHP页面跳转一、header()函数 header函数中Location类型的标头是一种特殊的header调用&#xff0c;常用来实现页面跳转 注意&#xff1a;1、location和“:”号间不能有空格&#xff0c;否则不会跳…

网络安全工具与社区讨论月报

本文记录了r/netsec网络安全社区月度讨论帖,包含成员分享的常用安全工具如Burp Suite和Nuclei,以及社区规则和最新动态,为安全从业者提供实用参考。r/netsec 月度讨论与工具分享帖 社区介绍 /r/netsec 是一个由社区…

机器人运动未来与人机交互研究

本文探讨了机器人运动与人机长期交互的前沿研究,包括机器人意图信号系统、机器学习在机器人感知中的应用,以及大规模实验环境对机器人技术发展的重要性。机器人运动未来与人机交互研究 移动机器人正日益普及:它们在…

欧拉路径 欧拉图 小记

欧拉路径 & 欧拉图 小记 P7771 【模板】欧拉路径 欧拉路径:一个图中经过每条边恰好一次的路径,允许经过重复点。 欧拉回路:起点与终点相同的欧拉路径。 对于连通图,欧拉路径有如下判定:对于无向图,恰好有两个…

OI 笑传 #16

The Taste of Kindness指差す先はインナーワールド 1 ABC423F 终于会了不用二项式反演的做法。 我们把这种东西叫什么好呢?预处理容斥系数? 首先这题是不能一般容斥的,因为我们求解的不是并集,而是独立集。 哎哎独…

课后知识整理

课后知识整理Java方法动手动脑与实验问题全记录 静态导入实验 实验:随机数 Math.random() 局限性 (int)(Math.random()*6) 只能生成 0–5,而不能公平生成 1–6。 Random 带种子实验 实验:

cf296b

CF296B Yaroslav and Two Strings link 题意 给定两个由数字和 ? 组成的字符串 \(s,t\),将 ? 替换为数字。若 \(s,t\) 中有 \(s_i>w_i,s_j<w_j(1\leq i,j\leq n)\),则是一种合法的替换。求合法的方案数对 \(…

昆山做网站费用个人工作室怎么注册

这个教程会教您如何设计发光斑驳的字体特效&#xff0c;会教您运用PS滤镜和纹理图片&#xff0c;同时也诠释了如何运用笔刷和图层样式给最终的字体效果增添光感。来&#xff0c;先看看最终效果&#xff01;第一步&#xff1a;创建一个1024*768的新文档。前景色#532118&#xff…

云原生与DevOps融合实践:加速企业数字化转型的加速器 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …