aliens专题

poj 3882(Stammering Aliens) 后缀数组 或者 hash

后缀数组:  构建后缀数组,注意要在字符串莫末尾加上一个没出现过的字符。然后可以2分或者直接扫描,直接扫描需要用单调队列来维护 VIEW CODE #include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#include<queue>#include<stack>#include<string

UVA - 12206 Stammering Aliens (hash)

这题其实很容易想到2分长度,关键是2分后,怎么判断出现最多次的串是否》=m次了。这里需要用到hash来处理。 对于一个字符串   H[i] =H[i+1]*131+s[i]  ;其中 H[n]=0;那么对于一个长度为L的串 ,hanh[i,l]=H[i]-H[i+L]*x^L ; 这样记录每个字符串的hash值,然后再处理起来就比较简单了。 VIEW CODE #include<

UVALive 4513 Stammering Aliens (hash+二分 or 后缀数组)

大白书上的一道例题,后缀数组的模板题吧,今天想练练hash,结果就wa+Tle了一脸。 还真没见过不卡自然取模,而卡自行取模的题,今天算是见到了。。取了好几个x,还是发生了碰撞?! 题意: 让你根据所给字符串,找出至少出现m次的最长字符串,输出最长的长度和起始位置的最大值。 思路: 字符串hash+二分。(等学会了后缀数组再来套下模板) 二分len,然后判断长度是否合法。 判断

习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)

原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include<bits/stdc++.h>using namespace std;const int maxn=505;int a[maxn],pos[maxn],b1[maxn],b2[maxn],n;i