此题sam做是很容易的
递推的时候记录两个值,到达这个结点的方案数way以及到达这个状态的数字之和sum。
每次接收一个c转移显然就应该是给下一个结点的sum加上
把这个式子的常数c拉出来就是
亦即
参考:http://edward-mj.com/?p=835
但是我不是用他那种sort的方法。。。由于先刷的spoj所以我同样是先top一遍
就这样从前往后推一下就好了,最后把每个结点的sum值都加起来就是答案。
推的时候要注意的就只有两点
- 根节点不应该接收0开头的串,因为这会弄出有前导0的串从而导致重复,那么从根节点就不能到0还是的串,这个很显然吧。
- 所有的转移都无视10这个分支,因为那本身就是不应该走的…,所以加入10这个边以示区分,这个也很显然把。