首页 > 其他 > 详细

兔子与兔子

时间:2020-01-31 19:02:51      阅读:61      评论:0      收藏:0      [点我收藏+]

题意就是随机给两个字符串, 判断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;
}

兔子与兔子

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!