Atcoder Beginner Contest 299 G
对于要打印的 \(B\),我们首先尝试确定 \(B_1\)。
让 \(f(x) (1≤x≤M)\) 是最大的 \(i\),使 \(A_i = x\)。
对于 \(r:=\underset{{{1≤x≤M}}}{\min}f(x)\),我们可以证明 \(B_1\) 是 \(A_1 ,A_2 ,...,A_r\) 中的一个(否则,\(B\) 是 \(A_{>r} :=(A_r+1 ,Ar+2,...,A_N)\)的一个子序列,但 \(A_{>r}\) 不包含 \(A_r\),这违反了 \(B\) 的条件)。
相反,存在一个长度为 \(M\) 的子序列,其第一个元素是 \(A_i\) 中的一个 \((1≤i≤r)\),它分别包含 \(1,2,...,M\) 一次。特别是,所有 \(A_{f(x)}\) 的子序列的 \(x\) 都有 \(x \neq A_i\)。
因此,\(B_1 =A_l = \underset{1≤i≤r}{\min}A_i\)。我们可以让 \(l\) 是最小的整数 \(j\),使\(A_j=\underset{1≤i≤r}{\min}A_i\)。
我们可以通过对以下序列重复类似的问题来确定\(B\)的所有元素(对元素进行适当的替换):
从 \(A\) 中除去前 \(l\) 项和所有使 \(A_i =B_1\) 的元素而得到的序列。
对一个序列的操作可以用一个优先级队列或一个段树来模拟。
在使用优先级队列管理 \((A_i ,i)\) 的情况下,我们可以通过把前r个词放在一起并找到它们的最小值来找到前 \(r\) 个元素的最小值。
移除 \(A\) 的前 \(l\) 个元素,并移除与某物相同的 \(A_i\),可以通过重复从优先级队列中移除一个元素来实现,只要队列中的顶级元素满足一个条件。
在段树的情况下,我们也可以做类似的事情。
移除与某事物具有相同价值的 \(A_i\),可以通过替换该 \(A_i\) 来实现。 删除时用 \(∞\) 来实现。
替换后,前 \(r\) 个元素的最小值是一个分段最小值。
这两种方法的时间复杂度都是 \(O(N\log{N})\),足够快。
Atcoder Beginner Contest 299 G的更多相关文章
- AtCoder Beginner Contest 272 - G - Yet Another mod M
随机 + 数论 题意 Submission #35524126 - AtCoder Beginner Contest 272 给一个长度为 \(n\;(1<=n<=5000)\) 的数组 ...
- AtCoder Beginner Contest 260 G // imos(累积和算法)
题目传送门:G - Scalene Triangle Area (atcoder.jp) 题意: 给定大小为N*N的OX矩阵,若矩阵的(s,t)处为O,其覆盖范围为:满足以下条件的所有位置(i,j) ...
- AtCoder Beginner Contest 282 G - Similar Permutation
套路题 题意 求有多少个 \(1\) 到 \(n\) 的排列满足恰有 \(k\) 对在排列中相邻的数满足前小于后 \(2 \leq n \leq 500, 0 \leq k \leq (n - 1)\ ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 075 C bridge【图论求桥】
AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- 题解 AtCoder Beginner Contest 168
小兔的话 欢迎大家在评论区留言哦~ AtCoder Beginner Contest 168 A - ∴ (Therefore) B - ... (Triple Dots) C - : (Colon) ...
随机推荐
- vue3 基础-应用app和组件基本概念
这篇主要对 vue 最基础的应用程序 Application 和组件 Components 进行一个简要和直观的认知, 具体要分析的代码如下: <!DOCTYPE html> <ht ...
- post 报头注入
1.user-agent 注入: 使用情况:万能密码无法绕过安全验证,用户名无法注入,通过查看源代码分析执行的动作. bp抓包修改user_agent的数据如下 User-Agent: ' or ud ...
- HashMap的数据结构和源码分析
如果想透彻理解什么是HashMap,首先需要知道HashMap的数据结构是什么:其次需要厘清它能做什么,即它的功能:最后,还需要知道HashMap怎么实现这些功能的.下面我们针对这三个方面展开剖析. ...
- springboot读取并映射额外的yml配置到bean
项目结构 userPermission.yml # 用户权限 user-permission: api: # 系统管理员 system_manager: - "*:*:*" # 应 ...
- 【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
我们在许多其他平台看到过OCR功能的应用,那么HarmonyOS在这方面的支持如何呢?我们如何能快速使用这一能力呢?使用这一能力需要注意的点有哪些呢?就让我们一起来探究吧~ [开发环境] 版本规则号: ...
- 构建基于Serverless架构的向量检索MCP Server
构建基于Serverless架构的向量检索MCP Server 随着LLM与Agent的快速发展,向量检索成为构建高效语义搜索和智能推荐系统的关键技术之一.OpenSearch Service 作为一 ...
- shell 脚本使用绝对路径
shell 脚本要使用绝对路径,不要在脚本中使用相对路径,使用相对路径的话脚本执行有可能在根目录,找到相对路径的位置
- linux(Ubuntu22.04)二进制安装mysql及redis
安装MySQL 1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 解压压缩包 tar xf mysql-8.0.30-linux ...
- Redis五-哨兵
目录 哨兵 导读 基本概念 主从复制问题 Redis Sentinel的高可用性 安装和部署 部署数据节点 部署Sentinel节点 Seninel配置优化 sentinel API 实现原理 三个定 ...
- python扩展中的调试器不再支持小于3.8的python版本(debugpy)
报错原因 python版本过低,vscode的插件不再支持低版本的python调试. 尝试方法 如果搜这个报错,常见的方法就是降低插件版本,但是可能带来新的问题:vscode Cannot read ...