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. 剑指offer03(Java)-数组中重复的数字(简单)

    题目: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...

  2. 基于 Flutter 的 Web 渲染引擎「北海」正式开源!

    简介: 阿里巴巴历时 3 年自研开发的 Web 渲染引擎北海(英文名:Kraken)正式开源,致力打造易扩展,跨平台,高性能的渲染引擎,并已在优酷.大麦.天猫等业务场景中使用. 作者 | 染陌来源 | ...

  3. 简单、有效、全面的Kubernetes监控方案

    ​简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中 ...

  4. 日志服务Dashboard加速

    简介: 阿里云日志服务致力于为用户提供统一的可观测性平台,同时支持日志.时序以及Trace数据的查询存储.用户可以基于收集到的各类数据构建统一的监控以及业务大盘,从而及时发现系统异常,感知业务趋势.但 ...

  5. [公链观点] BTC 1.0, ETH 2.0, EOS 3.0, Dapp, WASM, DOT, ADA, VNT

    Dapp 发展史 WASM 兼容Web的编码方式 Cardano(ADA 艾达币) 权益挖矿 VNT chain 解决联盟链和公链的跨链基础项目 跨链项目 Polkadot (DOT 波卡币) 是不是 ...

  6. QT 连接 MySQL 版本问题

    问题现象 SSL connection error: unknown error number QMYSQL: Unable to connect 问题原因 出现这样的现象是因为我QT使用的是5.7的 ...

  7. SpringBoot配置两个一样的Bean,区分两个配置类——@Primary

    1.@Primary 作用: 指定默认bean. 当没有根据名字显示要注入哪个bean的时候,默认使用打了@Primary标签的bean 2.配置两个一样的bean @Configuration pu ...

  8. Competition Set - AtCoder I

    这里记录的是这个账号的比赛情况. ARC172 2024-2-18 Solved:4/6 D(Hard-,2936) 给定所有数对 \((i,j),1\le i\lt j\le n\) 的一个排列 \ ...

  9. Linux中的find

    find命令在硬盘上进行文件的查找,比起whereis与locate会比较耗时. 与时间有关的选项 在Linux当中一个文件有mtime,ctime,atime,find在搜索时可以配置这3种时间. ...

  10. Splashtop 教育行业用户增加700%

    ​ 由于新冠肺炎大流行继续限制对大学.学院和K-12学校的计算机实验室的物理访问,Splashtop的销售数据表明,越来越多的学校开始使用远程访问软件作为使用计算机实验室资源的替代方法. 在6月到8月 ...