1 条题解

  • 0
    @ 2026-9-2 11:34:48

    字符串哈希板子。

    #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;
    }
    
    • 1

    信息

    ID
    155
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    2
    已通过
    1
    上传者