zoukankan      html  css  js  c++  java
  • Hash记录字符串

    Hash记录字符串模板:

    mod常常取1e9+7,base常常取299,,127等等等....有的题目会卡Hash,因为可能会有两个不同的Hash但却有相通的Hash值...这个时候可以用双Hash来判断。Hash值还是很巧妙的...

    ll getHash(ll x,ll y){
        return (Hash[y]%mod-Hash[x-1]*p[y-x+1]%mod+mod)%mod;
    }
    for(ll i=1;i<=n;i++){
            Hash[i]=((Hash[i-1]*base)%mod+s[i])%mod;
            p[i]=p[i-1]*base%mod;
        }

     其实可以用unsiged long long 来自动取模,这样会让程序更快一点...

    code:

    ull getHash(ull x,ull y){
        return Hash[y]-Hash[x-1]*p[y-x+1];
    }
    for(int i=1;i<=n;i++){
            Hash[i]=Hash[i-1]*base+s[i];
            p[i]=p[i-1]*base;
        }
  • 相关阅读:
    组合模式
    过滤器模式
    桥接模式
    适配器模式
    原型模式
    建造者模式
    抽象工厂
    工厂方法
    静态工厂
    单例模式
  • 原文地址:https://www.cnblogs.com/Accepting/p/12686647.html
Copyright © 2011-2022 走看看