摘要: 把所有的字符串连接起来,中间用一个未出现的字符分隔开,题意是求这个串的所有子串(中间不含分隔符)形成的数之和。把这个串加入SAM,对所有子串进行拓扑排序,从前往后统计。记录到达这个节点的路径个数cnt,以及到达这个节点的总和sum。设父节点是u,子节点是vsum[v] = sum[u] * 10 + sum[v] + cnt[v]*j;cnt[v] += cnt[u];ans就是把所有的sum加起来。注意:1.忽略前导零2.子串中不要含分隔符#include #include #include #include using namespace std;const int MAXN = 1001 阅读全文
posted @ 2013-10-02 19:21 冰鸮 阅读(307) 评论(0) 推荐(0)