NOIP2024集训Day57 哈希
A. [CF213E] Two Permutations
考虑到都是排列,值域连续,于是 \(a\) 都加 \(x\) 之后相当于在值域上平移了一段,也是连续的。由于要进行比较,个很容易想到哈希。\(a\) 的哈希值很好维护,每次平移一位加上 \(\sum base^i\) 即可。
考虑如何快速取出 \(b\) 中在这段值域内的数的哈希值。
不妨设 \(id_i\) 表示数 \(i\) 在 \(b\) 中出现的位置。值域类似一个滑动窗口,当 \(i\) 进入的时候就在 \(id_i\) 插入 \(i\),删除同理,用线段树可以简单维护处哈希值。
然后注意一下,该开 ull
的变量就要开 ull
,要么就写 #define int unsigned long long
。本人因为这个调了 30 min。
标签:值域,long,哈希,集训,NOIP2024,Day57 From: https://www.cnblogs.com/Leirt/p/18490339