hdu2296

来源:互联网 发布:实用 双肩包 知乎 编辑:程序博客网 时间:2024/05/22 07:08

此题在我优化后居然排rank1 哈哈。。。。


dp方程就是dp【i】【j】表示串长度为i的时候,在字典树节点为j的时候分值最大,但是由于要输出串,那么就用path【i】【j】表示dp【i】【j】时候字典序最小的串,可是你总不能用个string数组来表示这个串把,(貌似可以这么搞。。。)那样会比较慢的。由于每个串在ac自动机中有个标识,我只需要记录标识就可以了,我在建树的时候用个数组存当前节点字符,那么到时候比较的时候就方便很多了。然后就是输出的问题。正如网上所说,倒转插入字典序就好了。然后还有个地方,由于可能会出现价值相等的串那么就要比较长度,比较这个就一直向前比较啊,由于反向输入串,向前比较就相当于向后比较了。

还有就是当价值为0的时候要输出空串啊。。啊。啊。啊。啊。

dp[i][j]表示长度为i的时候,在Trie上的第j个结点时的最大分值,path[i][j]表示状态(i,j)时的字典序最小的串。

当最大值的为0的时候,输出空串。

原创粉丝点击