这个题目其实很简单啊…… 看了一下题解基本上都做烦了,一个 memcmp 的水题,怎么还用到了什么线段树维护哈希?开玩笑。。。
注意到所有数字都在 0~9 之间,于是可以考虑把放在字符数组里,然后每次更新直接 memcpy,查询 memcmp。
然后就结束了?
上代码。
1 2 3 4 5 6 7 8 9 10 11 12 13
| #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); 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"); } }
|
预览: