CSP-S 2023 题解

密码锁

发现总状态数只有 \(10^5\) 个,枚举 \(O(n)\) 暴力判断即可,复杂度 \(O(10^5 n)\)。

或者每一个状态只对应了 \(81\) 个状态,枚出来,取交集即可,复杂度 \(O(81 n)\)。

消消乐

好的,来一波抽象做法 QwQ

我看到这道题的第一眼:这不就是 QOJ 6504 Flower's Land 2 吗。

于是考虑对每一个元素赋一个矩阵 \(M_i\),奇偶分开赋正逆矩阵,例如 aaa 就为 \(M_a, M_a^{-1}, M_a\) 或者 \(M_a^{-1}, M_a, M_a^{-1}\)。

于是一个区间合法当且仅当 \(\prod M_i = I\),这可以考虑矩阵满足结合律,但是不满足交换律。

其实换成任意一种满足结合律,但是不满足交换律的东西来都可以维护。

暴力枚举是不可取的,考虑前缀和,则合法当且仅当 \(pre_r \times pre_{l - 1}^{-1} = I\)。

考虑两边同时乘上 \(pre_{l - 1}\),那么合法当 \(pre_r = pre_{l - 1}\)。

于是用一个桶或者 map 记录一下数量即可求出答案,注意需要开 long long

如果是 \(2 \times 2\) 的矩阵,求逆的话就别用高斯消元了,推一下式子即可得到:

\[\begin{pmatrix}
a & b \\
c & d \\
\end{pmatrix}
\begin{pmatrix}
\frac 1 a + \frac {bc} {a (ad - bc)} & \frac b {bc - ad} \\
\frac {-c} {ad - bc} & \frac a {ad - bc}
\end{pmatrix} = I
\]

或者可以用自逆矩阵,但我声称那没必要。

代码:云剪贴板 - 洛谷


然而这还不够优秀,(其实可以另开炉灶),我们基于矩阵继续优化。

其实不难发现,对于一个合法的区间,\(\prod M_i\) 可以被划分为若干个合法区间。

如果我们使得每一个合法区间最小,那么划分可以证明是唯一的。

例如 abbacddc 就可以分为 abbacddc 两个区间。

于是对于每一个 \(i\),考虑找到最后一个 \(pre_i = pre_j\) 的 \(j\) 记为 \(t_i\)。

我们考虑如何快速的递推求出 \(t_i\)。

如果我们已经求出了 \(t_{i - 1}\),也就是 \(\prod_{t_{i - 1} \le k \lt i} M_i = I\) 那么对于 \(i\) 来说,我们需要找到前面的某一个 \(j\) 使得。

发现 \(t_i - i\) 这个区间一定形如 \(x (某合法串) \cdots (某合法串) x\),于是初始答案为 \(x = t_{i - 1}\),我们不断的跳 \(t_{x - 1}\) 直到 \(S_x = S_i\) 为止,那么此时一定满足 \(t_i - i\) 是合法的且是最小的,利用神秘复杂度分析可以得知这就是 \(O(n |\Sigma|)\) 的。

最后 \(O(n)\) 的扫一遍,记 \(f_i\) 表示以 \(i\) 结尾的合法串的个数,\(f_i = 1 + f_{t_i - 1}\),答案为 \(\sum f_i\)

代码在剪切板底部:云剪贴板 - 洛谷

结构体

超级模拟,利用 object id 完成模拟即可。

只是注意 addrfix 与对应的 align

种树

显然二分答案,然后考虑如何检查。

发现可以快速的求解出最晚能放置的时间 \(f_x\),由于树形结构存在依赖,考虑 \(O(n)\) 的更新一次:\(f_x = \min(f_x, \min_{y \in Son(x)}f_y - 1)\)。

然后将 \(f_x\) 排序,存在合法的操作序列当且仅当 \(\forall i, i \le f_i\)。

现在就可以得到一个 \(O(\log V (n \log V + n \log n))\) 的抽象做法了(我的考场做法,还跑得挺快,自测数据用了 500ms)

其实可以 \(O(n)\) 的判断,优化如下:

可以发现树生长的过程是一段一次函数和一段二次函数,那么将断点预处理一下,每次可以 \(O(1)\) 的求解一个方程,解出最晚能放置的时间 \(f_x\),这部分就是 \(O(n)\) 的了。

发现合法的序列只需要判断 \(\le n\) 的部分即可,因为对于 \(f_i \ge n\) 的时候存在 \(i \le n \le f_i\),一定满足条件。

所以可以开一个 \(O(n)\) 的桶,前缀和一下数量 \(c_i\),满足 \(\forall i, c_i \le i\) 即合法,这样就可做到 \(O(n)\)。

于是得到了一个 \(O(n \log V)\) 的优秀做法。

CSP-S2023 题解的更多相关文章

  1. 2019 CSP J/S第2轮 视频与题解

    CSP入门组和提高组第二轮题解 转自网络

  2. 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解

    前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...

  3. [CSP模拟测试43、44]题解

    状态极差的两场.感觉现在自己的思维方式很是有问题. (但愿今天考试开始的一刻我不会看到H I J) A 考场上打了最短路+贪心,水了60. 然而正解其实比那30分贪心好想多了. 进行n次乘法后的结果一 ...

  4. 题解 nflsoj489 【六校联合训练 CSP #15】小D与随机

    题目链接 考虑枚举好点的集合.此时要考虑的问题是如何填入\(1\sim n\)这些数使得恰好我们枚举到的这些点是好点,即:求出有多少种合法的填数方案. \(1\)号点一定是好点.那么除\(1\)号点外 ...

  5. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  6. CCF计算机职业资格认证考试题解

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系 ...

  7. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  8. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  9. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  10. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

随机推荐

  1. DC-1渗透靶场实战速通版

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 文章为速通 ...

  2. 技术解读:Dragonfly 基于 P2P 的智能镜像加速系统 | 龙蜥技术

    简介: 结合 Dragonfly 子项目 Nydus 进行按需加载可以最大限度提升镜像下载速度. 编者按:上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP . FTP 等应用层协议.然而 C ...

  3. Dubbo 跨语言调用神兽:dubbo-go-pixiu

    简介: Pixiu 是基于 Dubbogo 的云原生.高性能.可扩展的微服务 API 网关.作为一款网关产品,Pixiu 帮助用户轻松创建.发布.维护.监控和保护任意规模的 API ,接受和处理成千上 ...

  4. k8s-1.28版本多master部署

    一.环境准备 k8s集群角色 IP 主机名 安装相关组件 kubernetes版本号 控制节点 192.168.10.20 master apiserver.controller-manager.sc ...

  5. K8s控制器---Replicaset(7)

    一.Replicaset(目前少用了) 1.1 控制器管理pod 什么是控制器?前面我们学习了 Pod,那我们在定义 pod 资源时,可以直接创建一个 kind:Pod 类型的自主式 pod,但是这存 ...

  6. [ABC345D] Tiling 位运算の极致运用

    [ABC345D] Tiling 原题解地址:Editorial by Kiri8128 神写法. 将 \(H \times W\) 的网格展开为 \(H \times (W + 1)\) 的序列, ...

  7. 《Effective C++》第三版-3. 资源管理(Resource Management)

    目录 条款13:以对象管理资源(Use objects to manage resources) 关键想法 智能指针 条款14:在资源管理类中小心copying行为(Think carefully a ...

  8. rails角本启动和停止

    start.sh #!/bin/bash nohup rails s Puma -d >> run_log.log 2>&1 & stop.sh #!/bin/bas ...

  9. ansible系列(21)--ansible的变量注册Register

    1. 变量注册Register register 关键字可以将某个 task 任务结果存储至变量中,最后使用 debug模块 输出变量内容,可以用于后续排障: 示例一:register的基本使用: # ...

  10. apisix~jwt-auth插件

    在网关开启jwt-auth插件之后,你的网关就具有了jwt解析和校验的功能,主要是校验jwt token的有效性,包含过期时间和签名等. https://apisix.apache.org/docs/ ...