cf666 C. Codeword 组合数学

题解:

首先暴力很显然 f[i][j]表示到第i个位置,串匹配到j

这样每次是n^2的

我们假设每个位置匹配的第一个位置

然后从这个到上一个位置一定不能等于这个串的值

ans=simga{i,C(i-1,k-1)*25^(i-k)*26^(n-i)}

这样可以做到O(tn)

但是发现一个比较xx的性质就是

不同s的长度只会有1+2+3... n^2=10e5 也就是只有根号个

所以我们可以对这根号个

预处理出simga{i,C(i-1,k-1)*25^(i-k)*26^(-i)}再/(26^n)就可以了

 

posted @ 2018-08-14 14:29  尹吴潇  阅读(257)  评论(0编辑  收藏  举报