CF竞赛题目讲解_CF213E(线段树+hash)
2022-06-06 11:05 作者:Clayton_Zhou | 我要投稿
// https://codeforces.com/contest/213/problem/E
// 线段树+hash
// 首先我们可以知道A序列是1~n的排列,那么我们可以先在B序列中把1~n的排列找出来,看其相对位置是否与A相同(hash可做),相同即表明存在一个d=0满足条件。
// 以此类推,我们接下来可以把B中 2~ n + 1的排列找出来,如果其每位-1后相对顺序还是与A序列一致,即存在d=1也满足。。。
// 线段树中保存一个长度为n的序列的hash。
// hash函数值: a[1]*23^(n-1) + a[2]*23^(n-2) + a[3]*23^(n-3)+ ......
// 一个线段树例子
// https://www.bilibili.com/video/BV1G3411s7Gb?spm_id_from=333.999.0.0