码迷,mamicode.com
首页 > 其他好文 > 详细

兔子与兔子

时间:2020-01-31 19:11:59      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:clu   sign   c++   pre   mes   开始   ++i   long   space   

题意就是随机给两个字符串, 判断ta们是否相等, 字符串从一开始给出的字符串截取。

说句废话, 复杂度好像可以强行乘个log

#include<bits/stdc++.h>
using namespace std;

char s[1000010];
unsigned long long f[1000010],p[1000010];

int main()
{
    scanf("%s",s+1);
    int n=strlen(s+1),q;cin>>q;
    p[0]=1;
    for(int i=1;i<=n;++i)
    {
        f[i]=f[i-1]*131+(s[i]-'a'+1);
        p[i]=p[i-1]*131;
    }
    for(int i=1;i<=q;++i)
    {
        int l1,r1,l2,r2;
        scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
        if(f[r1]-f[l1-1]*p[r1-l1+1]==f[r2]-f[l2-1]*p[r2-l2+1]) {
            puts("Yes");
        }
        else {
            puts("No");
        }
    }
    return 0;
}

兔子与兔子

标签:clu   sign   c++   pre   mes   开始   ++i   long   space   

原文地址:https://www.cnblogs.com/tztqwq/p/12246047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!