随笔分类 -  字符串

HDU 4046【树状数组】
摘要:题目:Panda题意:长长一篇情书纯是忽悠选手们的。给一连串由wb组成的字符中,从中找出"wbw"子串个数,有两种操作,操作0,L,R,询问L~R子串内包含"wbw"的个数。操作1,k,ch,将第k个字符更换为ch。解题思路:带着绵绵情意看完了整个题目后就崩出树状数组了,很明显啊,动态更改值,动态个数。sum(i)表示1-i字符串内包含"wbw"子串个数,则对第一个询问操作,直接可输出sum(R)-sum(L+1)即可,想想为什么要L+1呢? 对第二个操作,判断下更改前和更改后的情况,适当更新树状数组即可。详情代码。View Code 阅读全文
posted @ 2011-09-27 02:22 Kenfly 阅读(365) 评论(0) 推荐(0)
Shift-And 与 Shift-Or算法
摘要:当模式字符串长度数比机器字短和总字符集个数比较少时,Shift-And与Shift-Or算法平均效率是KMP的两倍,下面是Shift-And算法,Shift-Or是同样我思想,只不过用位0表示真状态 1 #include <cstdio> 2 #include <cstring> 3 4 void shiftAnd(char *t, char *p) 5 { 6 int lenP = strlen(p); 7 int b[26] = {0}; 8 for(int i = 0; p[i]; ++i) 9 {10 b[p[i] - 'a'] |= ... 阅读全文
posted @ 2011-07-22 16:48 Kenfly 阅读(1432) 评论(0) 推荐(0)