Codeforces - 914F bitset 维护字符串匹配个数
2024-08-24 12:28:09
题意:给你一个串,支持两种操作,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;
}
最新文章
- 转行做开发的Wiki:找好方向
- private + virtual in Java/C++
- 简述frame、bounds、center
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
- CENTOS7设置显示中文
- 流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
- windows2012 IIS8.5 不能在此路径中使用此配置节
- keil优化论
- Jmeter_从jdbc请求的响应中获取参数做关联
- obj-c编程08:分类和协议
- du---查看文件夹大小-并按大小进行排序
- Linux中安装Python2.7
- Redhat系统部署安装Splunk
- C# 当前目录你了解多少
- jdreact相关操作注意事项
- Spring的国际化(转载)
- 通达OA工作流主要表的数据结构
- [学习笔记]平衡树(Splay)——旋转的灵魂舞蹈家
- property函数的使用
- 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素
热门文章
- 9. Palindrome Number 回文数的判断
- Auto Control 001 自动控制的一般概念
- ssh时传递环境变量
- Struts中ActionContext和ServletActionContext的比较
- SVN常见问题及解决方式(二)
- Python基础-5
- Join导致冗余数据引起慢SQL
- Customizing Site-Wide Behavior for ASP.NET Web Pages (Razor) Sites
- iOS wkwebview https 加载不受信用的站点
- 使用Filter对POST和GET方式的请求参数的进行统一解码