题意:给你一个串,支持两种操作,1修改某个点的字符,2询问[l,r]内模式串P与原串的匹配个数

bitset的写法是真的6啊,简直是优雅暴力的典范

bs[i]表示\(T_i\)与\(P\)匹配与否,

具体地,每次错位按位与依次表示\(T_i,T_{i+1}...T_{i+len2-1}\)与\(P_1,P_2...P_{len2}\)匹配与否

注意的是最后去除重复部分的起始下标应该是\((r-len2+1)+1\),而不是\(r+1\)

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<bitset>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
#define println(a) printf("%lld\n",(ll)a)
using namespace std;
const int MAXN = 1e5+30;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-7;
typedef long long ll;
const ll MOD = 1e9+7;
unsigned int SEED = 19260817;
ll read(){
ll x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
bitset<MAXN> bs,cc[32];
char tmp[MAXN],str[MAXN];
int main(){
while(scanf("%s",str+1)!=EOF){
int len=strlen(str+1);
rep(i,0,26) cc[i].reset();
rep(i,1,len) cc[str[i]-'a'][i]=1;
int m=read();
while(m--){
int op=read(),t;
if(op==1){
scanf("%d%s",&t,tmp+1);
cc[str[t]-'a'][t]=0;
cc[tmp[1]-'a'][t]=1;
str[t]=tmp[1];
}else{
int l=read();
int r=read();
scanf("%s",tmp+1);
int len2=strlen(tmp+1);
if(r-l+1<len2){
println(0);
}else{
bs.set();
rep(i,1,len2) bs&=(cc[tmp[i]-'a']>>(i-1));
int ans=(bs>>(l)).count()-(bs>>(r-len2+2)).count();
println(ans);
}
}
}
}
return 0;
}

最新文章

  1. 转行做开发的Wiki:找好方向
  2. private + virtual in Java/C++
  3. 简述frame、bounds、center
  4. 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
  5. CENTOS7设置显示中文
  6. 流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
  7. windows2012 IIS8.5 不能在此路径中使用此配置节
  8. keil优化论
  9. Jmeter_从jdbc请求的响应中获取参数做关联
  10. obj-c编程08:分类和协议
  11. du---查看文件夹大小-并按大小进行排序
  12. Linux中安装Python2.7
  13. Redhat系统部署安装Splunk
  14. C# 当前目录你了解多少
  15. jdreact相关操作注意事项
  16. Spring的国际化(转载)
  17. 通达OA工作流主要表的数据结构
  18. [学习笔记]平衡树(Splay)——旋转的灵魂舞蹈家
  19. property函数的使用
  20. 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素

热门文章

  1. 9. Palindrome Number 回文数的判断
  2. Auto Control 001 自动控制的一般概念
  3. ssh时传递环境变量
  4. Struts中ActionContext和ServletActionContext的比较
  5. SVN常见问题及解决方式(二)
  6. Python基础-5
  7. Join导致冗余数据引起慢SQL
  8. Customizing Site-Wide Behavior for ASP.NET Web Pages (Razor) Sites
  9. iOS wkwebview https 加载不受信用的站点
  10. 使用Filter对POST和GET方式的请求参数的进行统一解码