Milk Patterns POJ - 3261(字符串hash+二分)

题意

求至少重复出现k次的字串的最大长度

思路

对于最大长度s的字串,当i>s时肯定不符合但是对于i

#include 
#include 
#include 
#include 

using namespace std;
const int MAXN=22222;
typedef unsigned long long ull;
ull xp[MAXN],hash_1[MAXN];
const int seed=13337;
int num[MAXN];

void init()
{
    xp[0]=1;
    for(int i=1;i=0;i--)
        hash_1[i]=hash_1[i+1]*seed+num[i];
    
}

ull get_hash(int i,int L)
{
    return hash_1[i]-hash_1[i+L]*xp[L];
}

ull ans[MAXN];
bool check(int L)
{
    int cont=0;
    for(int i=0;i=k) return true;
    }
    return false;
}
int main()
{
    cin>>n>>k;
    init();
    for(int i=0;i>1;
        if(check(mid)) l=mid+1;
        else r=mid-1;
    }
    printf("%d\n",(l+r)>>1);
    return 0;
}

 

你可能感兴趣的:(字符串/hash)