CF1750 记录
下面是 VP 时过的题。
Indirect Sort
可以发现 在 处,则其他位置可以自由交换;否则 的对应数不能变大(并且其他数不能变小),也不能换到 上。所以有一组合法操作的充要条件是 。
代码
Maximum Substring
可以发现花费为 时取整个串一定最优,其余显然是处理极长相同值的段即可。(为什么 B 比 A 简单)
代码
Complementary XOR
考虑构造 对应的差分序列 。此时选择区间 进行操作后, 和 都会取反( 恒为 );而目标是将 内每个数变为 。此时 则无解;否则结合 的初值讨论即可。
代码
Count GCD
令 ,考虑从 到 需要 满足什么性质。此时 为 ,需要 且 和 互质。此时可以对于每个 处理质因数(对于某个合法的情况,,故总时间复杂度为 ),然后对于 容斥出对应的答案时,由于 ;可得单次容斥计算的时间不超过 。
代码
下面是赛后过的题。
Bracket Cost
参考了 dottle 的题解。
考虑对某个子串 进行操作时,设内部的左括号总数为 ,右括号总数为 ,匹配的括号对数为 ,则对 操作的最小代价为 。
证明:先考虑必要性。第一个操作可以视为删除某个字符并在更前面任意处插入该字符,则每次操作一定不会增加对于一对匹配的括号,操作次数一定不会小于 。
然后考虑可能性。考虑 的情况:可以从前往后扫每个未匹配的左括号,如果存在未匹配的右括号,则其一定在这个左括号前面,可以直接把左括号移到该右括号前;否则在后面新增一个右括号。每一次操作均减少了一个未匹配的左括号,故总操作数为 。
此时需要计算 和 。计算 时,可以对原串的括号序列贪心进行匹配,然后对于每个括号对 ,有 个子串包括它。计算 时,可以将其拆成 。 不难求,然后求 时可以令左括号为 ,右括号为 , 为 之和,则 为 。可以把 升序排序,则 。
代码
Majority
先排除某个串的首位两端有 的情况,则长为 且两端一定有 的串的数量显然为 ()。下面只考虑两端一定为 的串。
考虑在最后每一个不合法的串只能转成 部分,满足第奇数部分全为 ,第偶数部分全为 且长度大于两边两段 的长度和。可以枚举最后的串的形态然后进行 dp。
设 为 内最后一个全 段的长度为 的不合法的串的数量, 为长度为 的合法串(特别地,)转移时枚举最后的全 段和全 段,则式子有 。此时根据定义有 ,问题相当于求 ,前缀和优化即可。
代码
本文来自博客园,作者:Fran-Cen,转载请注明原文链接:https://www.cnblogs.com/Fran-CENSORED-Cwoi/p/16865387.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?