给你一个主串再给你很多模式串对于每个串分别判断它在主串中出现了几次每个模式串还有一个flag标记 0:匹配的时候可以重叠 1:匹配的时候不能重叠在匹配的时候判断当期节点上一次匹配的时候在主串中的位置与当前位置之差是否大于模式串的长度即可View Code #include<cstdio>#include<cstring>const int MM = 500005,NC = 26;int N;char str[100010];char s[100010];int x[100010];int flag[100010];struct trie{ int ch[NC],fail Read More
posted @ 2012-05-19 23:57 Because Of You Views(336) Comments(0) Diggs(0) Edit
A题:模拟题,仔细点就好B题:DP给你一个数字矩阵,要求从左上角走到右下角的一条路径,这条路径上的数乘起来后末尾的0的个数最少末尾的0是由2、5产生的,于是联想一下是不是走2最少的一条路或者5最少的一条路就ok了呢?嗯,就是ok的.*_*假设从左上角走到右下角走过的数含因子2的最小的个数是x,5的最小的个数是y,则答案是min(x,y),即最优解x、y的个数中有一项是最少的证明:用反证法,假设最优解经过的数含a个2,b个5,a>x,b>y,易得答案肯定大于min(x,y),所以最优解的x、y肯定有一项是最小的View Code #include<cstdio>#incl Read More
posted @ 2012-05-19 16:00 Because Of You Views(293) Comments(0) Diggs(0) Edit