[CF2021C] Adjust The Presentation 题解

news/2025/2/24 23:15:17/文章来源:https://www.cnblogs.com/wfc284/p/18735213

C1

没有修改。
我们直接模拟人排队的过程。枚举 \(b\) 的每一个元素 \(b_i\),看看当前 \(a\) 数组的头部是不是和 \(b_i\) 相等,若是,将 \(a_i\) 移到某个位置;否则就 No。

问题来了,每次怎么移动 \(a_i\) 呢?
我们发现并不需要显式地移动,只需把用过的 \(a_i\) 丢到一个集合里,想用的时候拿出来就行,因为可以移到任意位置。
每次判 \(b_i\) 的时候多看一眼这个集合里面有没有 \(b_i\)。如果有,那 \(b_i\) 这个元素就合法。

进一步地,我们还不需要显式地弄出这个集合。我们发现,我们只关心 \(a\) 中每个元素被丢进集合的时间戳 \(dfn_i\)。记元素 \(v\)\(a\) 中出现的位置为 \(pos_v\),那么判 \(b_i\) 的时候只需要看看是否 \(i \ge dfn_{pos_{b_i}}\) 即可。
那么这个 \(dfn_i\) 等于多少呢?显然等于 \(b\) 中第一个出现 \(a_i\) 的位置。

于是就做完了,时间复杂度 \(O(n)\)

C2

现在带修了,我们考虑如何快速判断合不合法。
我们(通过归纳手玩)注意到合法等价于 \(dfn\) 是升序的。原因在于,若不升序,记 \(i < j\)\(dfn_i > dfn_j\)。在 \(dfn_j\) 这个时刻,我们需要 \(j\) 这个人出来放幻灯片,但是前面 \(i\) 这个人没有走,卡住了 \(j\),于是不合法。升序当然合法。
也就是说,我们只需要单点修改 \(dfn\),全局判断是否升序即可。

如何单点修改 \(dfn\)?
我们对每个 \(a\) 中的下标开个 set,记录在 \(b\) 中出现的位置。于是实时的 \(dfn\) 就是 set 中的最小值。
修改只需变更 set 中的元素。
每次对于 \((s,t)\),需修改 \(pos_{b_s}\)\(pos_t\)

如何判断升序?
讲一个 set 的做法。
升序(这里的升序并非严格,为处理方便将 \(dfn\) 中某些元素设为 \(\infty\))等价于差分数组的最小值大于等于 \(0\)。每次改 \(dfn_u\) 就是改 \(diff_u\)\(diff_{u+1}\),用 multiset 维护最小值即可。

做完了,时间复杂度 \(O((n+q)\log n)\)

submission.

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

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

相关文章

信息论概述

1 信息与消息 1.1 信息 1.1.1 信息的定义 信息是信息论中最基本、最重要的概念 香农信息的定义:信息是事物运动状态或存在方式的不确定描述 1.1.2 (香农)信息的度量样本空间:对于我们需要描述的事物中,事物可能存在不同的状态,即事物展现出来的多种状态。那么为了便于形容事…

JUC并发—12.ThreadLocal源码分析

大纲 1.ThreadLocal的特点介绍 2.ThreadLocal的使用案例 3.ThreadLocal的内部结构 4.ThreadLocal的核心方法源码 5.ThreadLocalMap的核心方法源码 6.ThreadLocalMap的原理总结1.ThreadLocal的特点介绍 (1)ThreadLocal的注释说明 (2)ThreadLocal的常用方法 (3)ThreadLocal的使用…

前端Vue创建

一、创建Vue项目二、导入idea 复制景区 三、设置main.js点击查看代码 import Vue from vue import App from ./App.vue import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import ./assets/golbal.css; import axios from axios; // 正确的模块…

朋友说喊搞个简单的微信对接的封装搞外包,不要那么多的方法拿来就用的的那种,来看看Simple.Wechat吧

朋友说喊搞个简单的微信对接的封装搞外包,不要那么多的方法拿来就用的的那种,来看看Simple.Wechat吧😂不知道大家有没有和我朋友一样,很多时候做外包总免不了去对接微信,最简单的微信用户信息获取、微信支付、微信模板消息发送,要是不熟悉总是要去找这个那个的包,但是人…

龙哥量化:二重奏啊!同时用deepseek和腾讯元宝的Hunyuan大模型写技术指标和选股公式,把收集的公式源码传给他,可以像人一样思考

龙哥微信:Long622889代写通达信技术指标、选股公式(通达信,同花顺,东方财富,大智慧,文华,博易,飞狐)代写期货量化策略(TB交易开拓者,文华8,金字塔) 开源的deepseek非常爆火,大科技公司都纷纷接入ds。腾讯元宝也接入了, 可以选Hunyuan或者deepseek模型给你帮忙,…

【APP逆向35】frida反调试2

前言:有些app运行时会监测frida的相关特征,监测到之后就会直接闪退 示例:解决方法:可以尝试使用strongR-frida-android来绕过监测1.下载frida-server(加强版)下载地址:https://github.com/hzzheyang/strongR-frida-android/releases?page=4 找到frida对应的版本解压,上…

【作业】自我介绍

软件工程学第一节课作业:自我介绍+软工5问作业相关信息这个作业属于哪个课程🔗班级链接 这个作业要求在哪里🔗作业链接 这个作业的目标 1. 自我介绍 2. 软工五问作业一: 自我介绍 🚩Hi! I am Mike, a technology learner enthusiastic in new ideas and programs. Toge…

磁盘总结---特殊符号系列-正则概述

1.系统管理-补充 文件系统: 磁盘中文件的组织方式常见文件系统 说明xfs centos 7默认的文件系统即可ext4 centos 6.x ubuntu 默认的文件系统ext3 centos 5.x 默认的文件系统swap 交换分区,也算是个文件系统2.磁盘性能指标磁盘性能指标 说明吞吐量(读写速度) 一般值得是磁盘读…

多态的前提--java进阶day02

1.多态的前提条件第一点和第二点都很好理解,第三点父类引用指向子类对象是什么意思?以下图进行讲解我们以前的写法,如下图,叫做子类引用指向子类那父类引用呢?就是把左边换成父类Animal即可因为dog和cat都是Animal的子类,所以二者皆可用该种引用方式并不是所有的对象都可…

行内块应用

这是做的作业<!DOCTYPE html> <html lang="zh-cn"> <head><meta charset="UTF-8"><title>Title</title><style>.pics {width: 1850px;height: 700px;display: flex;justify-content: center; /* 水平居中 */ali…