思路: 最后结果每一位都等于 s [ i ] s[i] s[i], 只要知道当前位的 p r e [ i ] pre[i] pre[i]值和当前位的 t [ i ] t[i] t[i]值就好了。 所以定义 d p [ i ] [ j ] dp[i][j] dp[i][j]为到了第 i i i为, p r e [ i + 1 ] = j pre[i+1]=j pre[i+1]=j的方案数。 然后
思路: 对于 f ( L , R ) f(L,R) f(L,R),可以发现 L = R L=R L=R时, f ( L , R ) = a [ L ] + 1 f(L,R)=a[L]+1 f(L,R)=a[L]+1。 否则等于 f ( L , K ) ∗ f ( K , R ) , L ≤ K ≤ R f(L,K)*f(K,R),L≤K≤R f(L,K)∗f(K,R),L≤K≤R。 所以直接用
题意: a [ i ] a[i] a[i]最多只有30,对应10个素因子,仅考虑这些素因子即可。 考虑题目的 f ( n ) f(n) f(n),可以发现, f ( n ) = 2 c n t f(n)=2^{cnt} f(n)=2cnt, c n t cnt cnt代表 d d d的素因子个数,所以我们只需要维护每个数的素因子个数。相同素因子的数可以合并。 所以完全不需要数据结构,直接用