找到乙個字串中出現超過m次的最長的子串,以及該子串最有出現的起點。如果有多個相同的就選擇最右端出現的。
二分長度,然後雜湊統計子串出現次數。
#include
using
namespace
std;
typedef
unsigned
long
long ull;
const ull seed = 229;
const
int maxn = 4e4 + 10;
char s[maxn];
ull sum[maxn], f[maxn];
mapint> mp;
mapint> :: iterator it;
int ans, m, n, pos, anspos;
void init()
bool check(int xx)
}return flag;
}void solve(int l, int r)
else r = mid - 1;
}if (ans == -1) puts("none");
else
printf("%d %d\n", ans, anspos);
}int main()
return
0;}
POJ 2774 字串雜湊 二分
題意 給出s,t兩個字串,求最長公共子串的長度 思路 首先二分答案x,預處理出s中長度為x的子串雜湊值並排序,在t中列舉起點,二分查詢t i.i x 的雜湊值 二分查詢直接用binary search 函式 複雜度其實是nlog方 1 include2 include3 include4 inclu...
hdu2920 字串雜湊
模式串中 把它分成一截截,當某一截在s串中多個位置能找到匹配,找第乙個匹配點,貪心 因為當中間有 可以利用它跳過一些字元,當遇到 先跳過乙個字元,其他的一截截貪心去找到匹配位置,若最後剩餘偶數個字元,則match 第一截和最後一截如果是非 和 必須嚴格匹配 找來的雜湊寫法 include inclu...
HDU 1800 字串雜湊
從n個數中,最少能分出幾個單調遞增序列。水題。就是找到n個數中出現次數最多的次數。只是n個數範圍有30個十進位制位,需要當成字串處理,這就用到了字串雜湊。include using namespace std const int maxn 3005 const int mod 100007 stru...