[luoguP2957] [USACO09OCT]谷仓里的回声Barn Echoes(Hash)

传送门

 

团队里的hash水题,数据小的不用hash都能过。。

也就是前缀hash,后缀hash,再比较一下就行。

 

——代码

 1 #include <cstdio>
 2 #include <cstring>
 3 #define ULL unsigned long long
 4 
 5 int n, m, ans;
 6 char s1[81], s2[81];
 7 ULL base[81], sum1[81], sum2[81], bit1[81], bit2[81];
 8 
 9 inline int max(int x, int y)
10 {
11     return x > y ? x : y;
12 }
13 
14 inline int min(int x, int y)
15 {
16     return x < y ? x : y;
17 }
18 
19 int main()
20 {
21     int i;
22     s1[0] = s2[0] = '0';
23     scanf("%s %s", s1 + 1, s2 + 1);
24     n = strlen(s1);
25     m = strlen(s2);
26     base[0] = 1;
27     for(i = 1; i < max(n, m); i++) base[i] = base[i - 1] * 107; 
28     for(i = 1; i < n; i++) sum1[i] = sum1[i - 1] * 107 + s1[i];
29     for(i = 1; i < m; i++) sum2[i] = sum2[i - 1] * 107 + s2[i];
30     for(i = n - 1; i >= 1; i--) bit1[i] = bit1[i + 1] + s1[i] * base[n - 1 - i];
31     for(i = m - 1; i >= 1; i--) bit2[i] = bit2[i + 1] + s2[i] * base[m - 1 - i];
32     for(i = 1; i < min(n, m); i++)
33         if(sum1[i] == bit2[m - i] || sum2[i] == bit1[n - i])
34             ans = i;
35     printf("%d\n", ans);
36     return 0;
37 }
View Code

 

转载于:https://www.cnblogs.com/zhenghaotian/p/6855354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值