CF1902

A

只要不是全 \(1\) 即可。

B

二分完成天数。

C

\(x\) 取差的 \(gcd\)\(a_{n+1}\) 见缝插针。

D

用一个 map 记录按原始操作序列,要走到 \((x,y)\) 的所有可能前缀。同时 \(px[i]\) 记录走了前 \(i\) 步到的 \(x\) 坐标,\(py[i]\) 记录走了前 \(i\) 步到的 \(y\) 坐标。

对于一次询问 \([l,r]\),先判断是否存在一个前缀的结尾在 \([1,l-1]\)\([r,n]\)。(注意:这里是 \([r,n]\) 不是 \([r+1,n]\))如果存在,直接 Yes

否则,判断原序列能否在 \([l,r]\) 中走到 \((px[l-1]+(px[r]-x),py[l-1]+(py[r]-y))\)。如果能,就 Yes;否则 No

E

\(s\) 的翻转为 \(s'\)

\(C(a,b)=|a|+|B|-2\times LCP(a',b)\)\(LCP\) 是最长公共前缀。

则答案要求计算 \(2n\sum |s_i|-2\sum\sum LCP(s_i',s_j).\)

前半部分简单,考虑用 Trie 算后半部分。两个字符串的 \(LCP\),就是它们在 Trie 上的路径相交的长度 \(-1\)

posted @ 2024-02-05 14:14  FLY_lai  阅读(1)  评论(0编辑  收藏  举报