其他分享
首页 > 其他分享> > 不可计算

不可计算

作者:互联网

这个题假如问l-r是否能凑出x这个是个很简单的dp

考虑最暴力的dp

f(i)=j=1⋁i​f(j−1)∧[s[j:i]∈[l,r]]

然后我们发现这个j:i有很多冗余的状态,我们需要优化它

考虑计数外层数位dp,里面维护状态用状压dp,类似于康托展开优化dp

关键点:如果有两个不同的【s和 DP 状态(k个 0/1)】在 DP 到第 i 位时的“状态”相同,它们就在第 i位后等价了。

优化1:如果已经不能从这一位转移,则记录大小关系是不必要的。如果这一位为 0,则无论是否可以转移也要看作是不能转移,即默认可转移位置的首位都不为 0,这对后面的分析是有帮助的。

优化2:注意 3×3 的状态(记录和 l, r的字典序上的大小关系)中的很多是可省略的,例如如果 r 在字典序上小于 l,则只有 55 段有效区间。
即 1+5=6。

优化3:如果有一位的状态是等于 l 或等于 r,则它后面的位状态都已经被确定,只有能否转移是不确定的,所以后面的不同状态数是 O (2^i) 个(如果这一位是倒数第 i 位)。考虑第一个等号,前面的状态数是 4^(k - i),后面的状态数是 2^i,对所有可能的 i 求和得到 4^k 个状态。

 

标签:后面,状态,不可,转移,计算,优化,数是,dp
来源: https://www.cnblogs.com/wyxmrzakioi/p/15355127.html