1 条题解
-
0
字符串哈希板子。
#include<bits/stdc++.h> using namespace std; #define ll long long struct HASH{ int sed,mod,h[1000006],pw[1000006]; HASH(int ssed=128,int mmod=998244353){ sed=ssed,mod=mmod; pw[0]=1; for(int i=1; i<1000001; i++) pw[i]=pw[i-1]*1ll*sed%mod; } void make(string s){ h[0]=s[0]%mod; for(int i=1; i<s.size(); i++){ h[i]=(h[i-1]*1ll*sed%mod+s[i])%mod; } } void make(char* s){ h[0]=s[0]%mod; for(int i=1; s[i]; i++){ h[i]=(h[i-1]*1ll*sed%mod+s[i])%mod; } } int get(int l,int r){ if(l==0) return h[r]; return (h[r]-h[l-1]*1ll*pw[r-l+1]%mod+mod)%mod; } int get(int r){ return h[r]; } }; HASH s1,s2(173,1000000007); signed main(){ cin.tie(0); ios::sync_with_stdio(false); string s; cin>>s; s1.make(s); s2.make(s); int m; cin>>m; while(m--){ int l,r,lll,rr; cin>>l>>r>>lll>>rr; l--; r--; lll--; rr--; if(s1.get(l,r)==s1.get(lll,rr)&&s2.get(l,r)==s2.get(lll,rr)){ cout<<"Yes\n"; } else{ cout<<"No\n"; } } return 0; }
信息
- ID
- 155
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 上传者