题解 CF580E 【Kefa and Watch】

引领天下

2019-07-14 14:26:32

Solution

这个题目其实很简单啊……看了一下题解基本上都做烦了,一个memcmp的水题,怎么还用到了什么线段树维护哈希?开玩笑。。。 注意到所有数字都在0~9之间,于是可以考虑把放在字符数组里,然后每次更新直接memcpy,查询memcmp。 然后就结束了? 上代码。 ```cpp #include<bits/stdc++.h> char s[100100]; int main(){ int n,m,k,l,r,c,i,f; scanf("%d%d%d%s",&n,&m,&k,s+1);//读入初始序列:直接转成char m+=k; for(i=0;i<m;i++){ scanf("%d%d%d%d",&f,&l,&r,&c); if(f==1) memset(s+l,c+'0',r-l+1);//修改 else puts(memcmp(s+l,s+l+c,r-l-c+1)?"NO":"YES");//查询 //哪有那么烦? } } ```