Can it be real? The world is a mirage.|

Leirt_Abu

园龄:6个月粉丝:10关注:9

NOIP2024集训Day57 哈希

NOIP2024集训Day57 哈希


A. [CF213E] Two Permutations

考虑到都是排列,值域连续,于是 a 都加 x 之后相当于在值域上平移了一段,也是连续的。由于要进行比较,个很容易想到哈希。a 的哈希值很好维护,每次平移一位加上 basei 即可。

考虑如何快速取出 b 中在这段值域内的数的哈希值。

不妨设 idi 表示数 ib 中出现的位置。值域类似一个滑动窗口,当 i 进入的时候就在 idi 插入 i,删除同理,用线段树可以简单维护处哈希值。

然后注意一下,该开 ull 的变量就要开 ull,要么就写 #define int unsigned long long。本人因为这个调了 30 min。


B. [CF961F] k-substrings

T 串的中心开始向两边扩展。首先处理串中心的 k 子串:如果 T 串长度为奇数,则 ans=1;如果长度为偶数,则 ans=11

接着开始向两边扩展。下一个的最长前后缀长度最多是上一个的长度 +2,最小是 1。枚举每一种情况,用哈希来判断是否能成立。


本文作者:Leirt Abu

本文链接:https://www.cnblogs.com/Leirt/p/18490339

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Leirt_Abu  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起