CSP-S2023 题解
CSP-S 2023 题解
密码锁
发现总状态数只有 个,枚举 暴力判断即可,复杂度 。
或者每一个状态只对应了 个状态,枚出来,取交集即可,复杂度 。
消消乐
好的,来一波抽象做法 QwQ
我看到这道题的第一眼:这不就是 QOJ 6504 Flower's Land 2 吗。
于是考虑对每一个元素赋一个矩阵 ,奇偶分开赋正逆矩阵,例如 aaa
就为 或者 。
于是一个区间合法当且仅当 ,这可以考虑矩阵满足结合律,但是不满足交换律。
其实换成任意一种满足结合律,但是不满足交换律的东西来都可以维护。
暴力枚举是不可取的,考虑前缀和,则合法当且仅当 。
考虑两边同时乘上 ,那么合法当 。
于是用一个桶或者 map
记录一下数量即可求出答案,注意需要开 long long
。
如果是 的矩阵,求逆的话就别用高斯消元了,推一下式子即可得到:
或者可以用自逆矩阵,但我声称那没必要。
代码:云剪贴板 - 洛谷
然而这还不够优秀,(其实可以另开炉灶),我们基于矩阵继续优化。
其实不难发现,对于一个合法的区间, 可以被划分为若干个合法区间。
如果我们使得每一个合法区间最小,那么划分可以证明是唯一的。
例如 abbacddc
就可以分为 abba
和 cddc
两个区间。
于是对于每一个 ,考虑找到最后一个 的 记为 。
我们考虑如何快速的递推求出 。
如果我们已经求出了 ,也就是 那么对于 来说,我们需要找到前面的某一个 使得。
发现 这个区间一定形如 ,于是初始答案为 ,我们不断的跳 直到 为止,那么此时一定满足 是合法的且是最小的,利用神秘复杂度分析可以得知这就是 的。
最后 的扫一遍,记 表示以 结尾的合法串的个数,,答案为
代码在剪切板底部:云剪贴板 - 洛谷
结构体
超级模拟,利用 object id
完成模拟即可。
只是注意 addr
的 fix
与对应的 align
种树
显然二分答案,然后考虑如何检查。
发现可以快速的求解出最晚能放置的时间 ,由于树形结构存在依赖,考虑 的更新一次:。
然后将 排序,存在合法的操作序列当且仅当 。
现在就可以得到一个 的抽象做法了(我的考场做法,还跑得挺快,自测数据用了 500ms)
其实可以 的判断,优化如下:
可以发现树生长的过程是一段一次函数和一段二次函数,那么将断点预处理一下,每次可以 的求解一个方程,解出最晚能放置的时间 ,这部分就是 的了。
发现合法的序列只需要判断 的部分即可,因为对于 的时候存在 ,一定满足条件。
所以可以开一个 的桶,前缀和一下数量 ,满足 即合法,这样就可做到 。
于是得到了一个 的优秀做法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?