Codeforces Round 924 (Div. 2)
E - Modular Sequence
题意
给定
题解
观察到对任意的
令
直接考虑每个位置做 DP 最少也要 2D 的状态(位置,上一个的值),但是观察到值域很小,于是不妨交换状态和答案,设
转移考虑枚举下一个等差数列的长度,若当前计算
由于第一个等差数列的首项比较特别,但是仅有它一个特别的,于是先暴力枚举它的长度给
于是处理一组数据的时间复杂度为
F - Digital Patterns
题意
给定
题解
首先考虑不带修怎么求。观察到
文字有点抽象,可以看样例:
设
考虑如何计算
这个式子显然不好弄,我们需要更好算的式子,容易发现它是一个三次多项式,可以大力展开:
这个式子已经很简洁了。注意到只要对
于是可以先对行列分别按相等位置分段,对值域开数据结构维护一个方向的长度的
对于修改,首先发现区间修改是骗人的,因为我们关注的只是相邻元素是否相同,于是区间修改相当于改变左右端点处的相等情况,相当于对相等情况的两次单点改。
单点改可以等价于先删再加,删除和添加都可以根据上面的式子讨论大小关系后求出答案变化量。删除和添加的区间长度容易用 set
维护。
至此我们得到了一个常数巨大的 set
因为操作少所以还不算瓶颈。
本文作者:Transparent
本文链接:https://www.cnblogs.com/xzmxzm/p/18013609/CF1928
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步