专栏文章
P14363题解
P14363题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minelmpk
- 此快照首次捕获于
- 2025/12/02 01:08 3 个月前
- 此快照最后确认于
- 2025/12/02 01:08 3 个月前
我们充分发扬人类智慧,考虑对着这个限制直接统计,使用字符串哈希,那么 与 能够成功替换当且仅当
其中 是钦定的哈希基数, 与这个位置到串的结尾的距离有关,当然还需要满足 在 中出现过。
先从第一个式子考虑起,我们将这个式子变形。
注意到当你的哈希模数为质数时,是可以提前处理出 的逆元的,于是左边式子的值在枚举结尾的位置时就成了定值,相当于我们要查找有多少对 满足 ,直接使用手写哈希表统计就行了。
在具体实现中,哈希表中这一位的数不一定满足要求,所以我们需要遍历每一位,判断 是否在 中出现过。
但这时候就会出现一个问题,就是
b 的哈希值 a 的哈希值与 c 的哈希值 b 的哈希值相同,这样会使复杂度退化,这是我们不希望看到的,于是我们充分发扬人类智慧,考虑对 个字符随机分配一个哈希权值 。这样就保证了如果两对字符串不同,随机数据下,那么它们的哈希差不同且在哈希表中是均匀分布的,这样就保证了我们暴力查找判断的复杂度。这么做复杂度约为 ,随机数据直接吊打一众二维数点做法,约为线性,但常数巨大,因为有一堆乘法与取模,但是可以被特殊数据卡到超时,但在考场上不失为一种好做法。
代码等拿到了再放,考场上写这玩意结束前半小时才调出来,没时间写 ,痛失 ,不过这是不是我正赛中切的最牛的一道题。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...