当前位置: 首页 > news >正文

[ARC147F] Again ABC String 题解

[ARC147F] Again ABC String 题解

Link

题目大意

现在有 ABC 三种字母构成了 \(S\) 串。

对于 \(S\) 的前 \(i\) 个字符组成的字符串 \(S_i\),记 \(S_i\)ABC 的个数分别为 \(A_i, B_i, C_i\)。对于任意满足 \(1 \le i \le N\) 的整数 \(i\),都满足以下条件:

  • \(A_i - B_i \le X\)
  • \(B_i - C_i \le Y\)
  • \(C_i - A_i \le Z\)

现在询问有多少个满足上述条件的 \(S\) 串,对 ${\color{Red}2 } $ 取模。

条件翻译

现在设 \(\alpha_1=X-(A_i-B_i)\)\(\alpha_2=Y-(B_i-C_i)\)\(\alpha_3=Z-(C_i-A_i)\)

那么考虑 \(i\rightarrow i+1\) 的过程中,一定会有一个 \(\alpha_i(i\in\{1,2,3\})\)\(+1\),有一个会 \(-1\)

将题目限制等价为现在有三个变量,初始值 \((a,b,c)=(X,Y,Z)\),现在对其做 \(N\) 次操作,每一次可以把一个变量的值 \(+1\) ,一个变量的值 \(-1\),且在任意时刻,三个变量值非负。

再进一步,现在给你一个 \(X+Y+Z+3\) 的环,初始有三个点分别在 \(0\)\(X+1\)\(X+Y+2\) 这三个点,现在可以对一个点向右移动 \(1\) 步。

但是不能有时刻点重叠。

条件再转化

考虑在 \(t\) 时刻两个点重叠,那么考虑接下来两个点的运动轨迹 \(path_1\)\(path_2\) ,发现假设交换两个轨迹,是一种新的方案(这里不考虑 \(t=N\) 的情况)。

由于题目特性,对 \(2\) 取模,也就是说,两个点在途中重叠本身对于答案的贡献为 \(0\)
也就是说,我们对于上述点重叠限制,只需要考虑 \(t=N\) 的情况即可。也就是最后停下时三个点中有两个点重叠(一号和二号,二号和三号,三号和一号)。

有聪明的人会问了,这里重复计算了三个点同时重叠的情况,可多算了 \(2\) 次,对于答案也是没有贡献的。

Solution

所有的情况为 \(3^N\) ,只需要减去两个点在最后重叠的情况即可。

然后现在我们关注其中的两个点,由于只关注两者是否重叠,也就是具体位置我们不关心,将其转化为差值。

Solution 1

考虑使用生成函数来刻画差值。

(下面以 \(1\) 号点和 \(2\) 号点重叠为例)

也就是我们要求 \([x^{X+1}]((x^{-1}+1+x)^N)\bmod 2\),当然,这里的卷积是循环卷积,对于 \(x^{X+Y+Z+3}\) 取模 。

引理

\[\begin{aligned}(x^{-1}+1+x)^{2^k}\equiv x^{-2^k}+1+x^{2^k}\end{aligned}\pmod{2} \]

证明如下:

假设上述条件对于 \(1\sim k-1\) 成立,对于 \(k\) ,有:

\[\begin{aligned}(x^{-1}+1+x)^{2^k}&\equiv [(x^{-1}+1+x)^{2^{k-1}}]^2\pmod{2}\\ &\equiv [x^{-2^{k-1}}+1+x^{2^{k-1}}]^2 \pmod{2}\\ &\equiv x^{-2^k}+1+x^{2^k}+2(x^{-2^{k-1}}+1+x^{2^{k-1}})\pmod{2} \\&\equiv x^{-2^k}+1+x^{2^k} \pmod{2} \end{aligned} \]

然后成立了。

现在我们可以把 \(N\) 按照二进制分一下,就可以直接卷积了,时间复杂度是 \(O(M\log N)\) 的。

Solution 2

http://www.jsqmd.com/news/650871/

相关文章:

  • 如何快速上手TimesFM:谷歌时间序列基础模型的完整实战指南
  • Harbor 2.8+ 弃用ChartMuseum后,如何用OCI规范管理Helm Charts?
  • 专业术语统计报告_基于复杂适应系统理论的多能源电力系统电源优化规划研究
  • AD9280 ADC模块原理图设计,已量产
  • 2026 托福机构排名 TOP5|大学生在职人士首选指南 - 速递信息
  • 2025最权威的六大降重复率工具推荐
  • 2026一体化预制泵站采购指南:行业头部三大厂商全方位横向评测 - 泵站报价15613348888
  • 微信小程序全局音频管理实战:防止创建多个InnerAudioContext实例
  • 大模型应用开发实战(13)——多 Agent 真的有必要吗?LangGraph 背后的分工逻辑拆解
  • 探索Intel NPU加速库:解锁AI硬件潜能的三步实战指南
  • 【算法刷题指南】从零开始的LeetCode系统训练(持续更新 分类索引)
  • OpenClaw飞书消息发送图片的坑:filePath 路径导致的显示差异
  • Linux 帮助手册与用户管理完全指南
  • 离心泵CAE_2_ICEM结构化网格划分实战
  • 5分钟搞定!Docker快速部署MQTT服务mosquitto(附手机APP测试指南)
  • 就在2月5日!维普系统全面升级:查重库与AI算法双重施压,2026毕业季保姆级通关指南
  • flutter--基础环境安装
  • 宁夏卷帘门加工维修找哪家?首选银川开源门业,承接各类卷帘门加工和维修,十年老厂,正规靠谱有实力,全区域上门服务 - 宁夏壹山网络
  • 08. Python进阶之路:深度解析递归、推导式、生成器与模块化编程
  • 从GAN到U-Net:实战中PyTorch转置卷积的参数配置与避坑指南
  • 永磁体温度稳定性优化:从剩磁温度系数到材料改性策略
  • 告别虚拟机!用ZYNQ7000和PYNQ 2.6.0打造一个能实时识别人脸的“智能摄像头”
  • Image Signal Processing(ISP)-第二章-从Bayer到RGB:Demosaic算法详解与BMP编码实战
  • 收官篇 —— 从会做事,到把事做对
  • STM32CubeIDE在Ubuntu上安装后必做的5件事:优化配置、安装中文包与插件推荐
  • 2026 年经营美发店,美发店会员管理系统如何选合适? - 记络会员管理软件
  • 保姆级教程:用Burp Suite Community 2024抓取DVWA本地请求(附证书配置避坑指南)
  • 湘仪台式高速离心机型号解析:转速、容量与转子的精准匹配 - 品牌推荐大师1
  • 2026,自动驾驶“分水岭”:L3持证上岗,L4冲向无人区
  • 【OS】互斥锁和自旋锁的区别