CF623E Transforming Sequence(多项式/倍增fft/动态规划)

该博客介绍了如何使用倍增NTT(Number Theoretic Transform)技术解决CF623E Transforming Sequence问题。尽管模数的引入增加了复杂性,但通过动态规划和巧妙的状态设计,可以将问题转换为求解前缀和严格递增序列的方案数。博主提出状态`gi,j`表示前`i`个数中恰好有`j`位为1的方案数,并利用组合数进行转移。利用性质`gn+m,i=∑j=1ign,jgm,i−j2jm`,可以实现分治MTT算法,将复杂度从线性降低到对数级别。" 117113802,10847999,精通Netty:Java架构师必修课,"['后端开发', 'Java', 'Netty', '框架', '面试']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CF623E Transforming Sequence

经典的倍增NTT题目,但是由于万恶的模数导致这道题变成了倍增MTT
要求n个数前缀或严格递增的序列个数,一共有k位。

然后我们考虑进行dp,然后我的思路就是 f i , j f_{i,j} fi,j表示前i位在k位中有j位的方案数,然后可以利用组合数进行转移,但是这个状态设计不优秀,主要在于它包含了这j位在k位中哪些位置的信息,但是我们完全不需要,因为这j位和其他j位是完全等价的,我们本质上只需要考虑这j位,那么得到另一个状态设计 g i , j g_{i,j} g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值