Modular Sequence

这个题目的官方题解写的挺好的

写成这个样子我们就可以想到先把所有数都模一个y

然后我们就要考虑怎么构造这个数列了,注意这都已经是E了,一般是不会再出现像前面几道题目的直接构造了,一般是要利用算法了

这里我们就考虑怎么样才能够构造出来类似的数列。对任意一种方案,我们把只有单个0的blocks全部放到序列最后,我们现在就只需要决定最开始的一连串b1+k1到哪里就行了(也就是k1的大小),只要我们前面决定了,我们只用判断剩下的位数是否存在一种合法的方案,最后填写出来符合题意的解

这个时候就要利用DP

其实就是考虑当前数值s,如果用上面说的012...012...这种形式来填,最少会用多少个数。DP的过程可以想一下然后看CF的代码,非常简单

如果最少的都不行了,那么肯定就不行了;如果最少的可以,那么就存在一种方案了

但是这道题目记得特殊判断n=1的情况,然后还要记得不要用乘法判断,会溢出,把乘法换成除法

update 2024.7.7

重新做一遍这道题目就差DP这点啊!

我们不用像题解那样先给每个数减去xmody,实际上我们可以直接写出如下式子:

(s1+1)x+(1+s1)s12y+(s2+1)(xmody)+(1+s2)s22y+...+(sp+1)(xmody)+(1+sp)sp2y=S

记住OI的数学题一定要会枚举,所以我们枚举最特殊的s1(这也是考虑特殊元素),然后所有值就可以得到一系列值(注意s1+1+s2+1+...+sp+1=n),化简之后就会发现转换为上面题解所说的了

update 2024.8.19

看到s的数据范围也可以往DP上面想

posted @   最爱丁珰  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示