摘要:
首先先观察到一个非常浅显的性质:就是一个位置在序列中不是第一次出现,那么到这个位置的时候打出这个字符需要恰好一次按键,这是因为我们肯定在打出第一次出现这个字符的位置的时候已经知道哪个键对应这个字符了,到那个位置的时候直接敲一下就 ok 了。 也就是我们只用关心这个序列中出现了多少种不同的数,设为 $ 阅读全文
摘要:
。 阅读全文
摘要:
交了整整 2 页,本来想用随机化卡过去的,后来发现我的实现跑得太慢就写正常做法了。 首先发现最优答案对应的四个点只可能有以下两种可能: - $a,b$ 间有边,$c,d$ 间有边,此时答案是 $a,b$ 边权值加 $c,d$ 边权值。 - $a$ 与 $b,c,d$ 三个点间都有边,此时答案是三条边 阅读全文
摘要:
显然无法用 polylog 的数据结构维护,序列分块也不行,考虑询问分块。每 $B$ 个询问处理一次。 将这个询问中 $2,3$ 操作涉及到的点设为“关键点”,那么容易发现,环上每一段以关键点结尾的链在这块操作的过程中始终保持不变,也就是说我们可以把它们缩在一起。 先预处理出每个块的增量对每组询问的 阅读全文
摘要:
不知道怎么放到 div1F 的,感觉没啥亮点。 首先对于一条 $1$ 到 $n+1$ 的路径而言,它经过的点的编号一定是递增的,也就是说,如果我们将关键点大小排个序,那么答案就是相邻两点间最短路的和。删 / 加点造成的变化是 $O(1)$ 的,所以问题等价于,多次询问这张图中 $x,y$ 之间最短路 阅读全文
摘要:
先考虑一个平方的做法。我们先问出 $1,n$:遍历所有元素,删掉它以后问一下剩余 $n-1$ 个元素形成的集合,如果是 $n-1$ 的倍数说明这个元素要么 $1$ 要么 $n$,由于两个排列是镜像的所以任意钦定一个是 $1$ 一个是 $n$ 即可。删掉两个元素以后归纳问剩余部分也可以知道 $2,n- 阅读全文
摘要:
数据结构好题。 先考虑如果 \(s_i\) 全是 \(1\) 怎么做。考虑一个非常特殊的状态:如果当前最靠左的舞蹈者跳一步就能跳到最靠右的舞蹈者的右边,那么这样的局面性质其实是非常完美的。因为容易归纳证明,这样的局面下,每一步最靠左的舞蹈者跳一步都能跳到最靠右的舞蹈者的右边,这样一来,如果维护出了初 阅读全文
摘要:
。 阅读全文
摘要:
值域倍增的小技巧 阅读全文
摘要:
(注:默认下标 1-indexed) 考虑一个数组被清零的充要条件:记 $b_i=a_{i}-a_{(i+n-2)\bmod n+1}$,那么最终 $a_i=0$ 当且仅当 $b_i=0$ 且 $a_1=0$。 思考一次操作的影响:假设我们对 $[x,x+k-1]$ 这段环上的区间进行了 $+v$, 阅读全文