摘要:
o(︶︿︶)o 唉,菜鸟整理出来大神的代码~附加个前向星式建图/*题意: 给出n个字符串, 计算两两比较的次数. 每次比较都需要比较(str1[i] == str2[i])和 (str1[i] == '\0'各一次).点评:将N个字符串插入前缀树,‘\0’也插入,这样就能区分字符串的终结点S1与S2的共同前缀S,则比较次数为len(S)*2+1但S1与S2相同,则比较次数为 (len(S1)+1)*2 (注意:这时连'\0’都算进去了噢~,因为适用性,所以模板最好是用一维的前向星式的*/#include <cstdio>#include <iostre 阅读全文
摘要:
给出一个由S个不同单词组成的字典和长字符串。把这个字符串分解成若干个单词的连接(单词可以重复使用),有多少种方法?比如,有4个单词a、b、cd、ab,则abcd有两种分解方法:a+b+cd和ab+cd。待分解的字符串:长度L不超过300000单词的个数:1<=S<=4000思路:令d[i]表示从字符i开始的字符串的分解方案数,则d[i]=sum{d[i+len(x)] | 单词x是S[i..L]的前缀)},由它的递推性质可知,只需要从后往前遍历字符串,记录d[i],再累加就是答案动态模板:#include<iostream>#include<cstdio># 阅读全文