「HDU-4821」String
字符串hash,求长度为m*l子串中m个小子串两两互不完全相同的子串个数
*假的字符串选手发现自己甚至不会hash,学习一个。
题意
给定一个字符串,求将长度为m*l的子串分割为每段长度为l的m段后,m段两两互不完全相同的子串个数。
思路
对字符串求hash值,map计数去重,判断当前不同字符串数是否等于m.
对于每个中间区间相同的区间,利用滑动窗口求解降低复杂度,即:删除左侧子串哈希值,将右边区间哈希值加入集合。
代码
1 |
|
「HDU-4821」String
字符串hash,求长度为m*l子串中m个小子串两两互不完全相同的子串个数
*假的字符串选手发现自己甚至不会hash,学习一个。
给定一个字符串,求将长度为m*l的子串分割为每段长度为l的m段后,m段两两互不完全相同的子串个数。
对字符串求hash值,map计数去重,判断当前不同字符串数是否等于m.
对于每个中间区间相同的区间,利用滑动窗口求解降低复杂度,即:删除左侧子串哈希值,将右边区间哈希值加入集合。
1 | #include <cstdio> |