CSP模拟赛 #42

news/2024/10/22 20:17:56

#40 懒得写了,#41 题目质量过低。

A

\(n\) 张长度为 \(m\) 的纸条,每张纸条有 \(k_i\) 个位置有小写字母,其他位置透明。你需要合理从上到下排列这些纸条,使得最终在上方看到的字符串为 \(s\),保证对于每个位置,至少一张纸条在该位置有一个字母。给出方案或无解。

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

纸条用的越多越好,这是一个类拓扑排序。提取出每张纸条被限制的位置,每放上一张纸条就把所覆盖的位置全标记一下,解放这些位置。对于每张纸条,记录一个 \(cnt_i\) 表示剩余仍被限制住的位置数,把 \(cnt_i = 0\) 的纸条加入队列。

B

给定两个序列 \(a_{1\dots n}, \ b_{1\dots m}\)。你需要分别选择 \(a\)\(b\) 中一段,满足选出的两段长度相等,并且两个子段对应位置上的数相加后是一个回文序列。求最长的回文序列。

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

设提取出来的子段为 \(A,B\),那么 \(A+B = (A+B) ^ R \Rightarrow A - A^R = B^R - B\)。处理出 \(a,b\) 两个序列以及 reverse 后的序列的哈希值即可 \(\mathcal O(1)\) 判断。

回文序列有奇偶两种,对于奇偶两种都做一次二分,转化为判定 \(mid\) 是否合法。

提取出 \(a,b\) 的所有长度为 \(mid\) 的子段,扔进哈希表里判断一下是否有相同的即可。

  • 启示:每一步思路清晰。

C

一个长度为 \(n\) 的排列,有若干个位置未填写。你需要填写这些位置,求出最大的 LIS。

\(1\le n\le 10^5\)

\(p_i\) 为前 \(i\) 个位置中未填写的位置个数,\(q_i\)\(1...a_i\) 中未出现的数字个数,那么 \(f_i = \max\limits_{j = 1} ^ {i - 1} \{f_j + \min(p_i - p_j, q_i - q_j)\}\),cdq 分治即可。

D

一个值域为 \([1, n]\) 的整数序列 \(a_{1\dots n}\),满足每种整数最多出现 \(2\) 次。设 \(S[l, r]\)\(a_{l\dots r}\) 组成的可重集,设 \(T\) 为所有 \(S[l, r]\) 组成的集合,求 \(\text{card}(T)\)

若一个区间 \([l, r]\),存在另一个区间 \([l', r']\) 满足 \(l' < l\)\(S[l, r] = S[l', r']\),那么不合法,考虑用 \(\frac {n(n + 1)}2\) 减去所有不合法的区间。

一个区间 \([l, r]\) 不合法,当且仅当满足以下之一:

  • 存在 \([l', r']\) 满足 \(r' < l\)\(S[l', r'] = S[l, r]\)

  • 存在 \(l\le l'\le r\),满足 \(S[l', r] = S[l - (r - l' + 1), l - 1]\)

\(b_i\) 为前一个等于 \(a_i\)\(a_j\) 的位置 \(j\)。若不存在,则 \(b_i = -2i\),设 \(c_i = \max(0, b_i)\)

条件一很好算,令 \([b_i, c_i]\) 为区间,考虑单调栈 + 线段树维护最小值个数。

条件二可以枚举 \(l'\),维护 \(r\) 的信息。设 \([l', r]\) 这一段的 \(c_i\) 的最大值为 \(p_r\),那么区间 \([l = p_r, r]\) 有贡献。一个区间可能贡献多次,我们强制令每个 \(r\) 通过最大的 \(l'\) 来贡献。具体的,在每个 \(r\) 上维护一个标记。\(r\) 位置上统计的最小值为 \(0\) 且有标记,去除标记并对答案造成贡献。当 \(p_r\) 改变时,对应贡献到的区间会改变,所以应重新给这些 \(r\) 打上标记。

我们需要动态求出所有最小值的位置上的标记,去除所有最小值位置上的标记,或者给一段位置重新打上标记,这些都可以用线段树解决。

减去同时满足条件一和条件二的情况,这种情况只可能是 \(l' = l\)。考虑求出满足 \(p_r = l' - 1\)\(r\) 的区间 \([r_0, r_1]\),贡献为这一段区间中最小值为 \(0\) 的位置的标记个数。

启示:更换枚举对象(枚举 \(l'\));最小表示法;容斥拆条件

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

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

相关文章

markdown转pdf,方法总结

总结使用1. VScode插件Markdown Preview Enhanced。格式是正确的。但是无法批处理和指令处理2. pandoc --pdf-engine=typst。无法导出粗体和斜体需求 markdown格式转为pdf我遇到的: 1. 我现在想把多个八股文文档(GitHub项目里的 scutan90/DeepLearning-500-questions: 深度学…

苦寻多日,终于搞定了地形切片,向大家安利一下这款超简单的免费GIS工具箱

概述 地形切片是将大范围的地形数据分割成小块(切片)进行存储和展示的技术,常用于高效的三维地形可视化和动态加载。在实际操作中,可以通过GISBox等工具进行地形切片处理。今天和大家安利的GISBox 是一个用于GIS模型切片、服务分发的免费GIS工具箱,其中包括了支持地形切片…

历届 CSP 刷题记录

\(\texttt{CSP 2019}\) J 组 \(\texttt{T3}\) 题目传送门 注意到一点:每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。 这告诉我们:在一天内,纪念品就是钱,钱就是纪念品,钱和纪念品没有本质区…

Nacos K8s

Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 是构建以服务为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。更多的功能特性介绍请查看 Nacos 概览。 在本文…

RocketMQ - 总结

1. 为什么要使用MQ,使用场景是什么异步 : 减少请求响应时间,实现非核心流程异步化 (架构设计原则,能异步就不要同步) 解耦:屏蔽异构平台的细节,生产者消费者可自行扩展修改系统能力只需遵循消息约束,生产者消费者不受对方影响 流量削峰:消息堆积能力,消息保存在MQ中,…

数据采集作业一

一、用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020)的数据,屏幕打印爬取的大学排名信息点击查看代码 # 目标网址 url = "http://www.shanghairanking.cn/rankings/bcur/2020"# 获取网页内容 response = url…

PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展

检查并开启 sqlite3 扩展打开 PHPStudy Pro 软件。 导航至设置 -> 配置文件 -> php.ini。 选择你当前使用的 PHP 版本(例如 php7.3.4nts)并点击打开 php.ini 文件。 在 php.ini 文件中搜索 extension=sqlite3。 如果该行被注释掉(前面有分号 ;),则去掉分号以启用扩展…

PbootCMS上传空间后前台打开内页显示404错误怎么解决

检查 URL 规则配置登录 PbootCMS 后台。 导航至 配置参数 -> URL规则。 选择 伪静态模式 并保存。添加伪静态规则根据你的服务器环境,选择合适的伪静态规则文件。 一般情况下,Apache 环境使用 .htaccess 文件。Apache 环境配置将 rewrite 文件夹中的 .htaccess 文件复制到…