原理:开 S 个块,对于 $i=1\sim S$,每 $i$ 个块放一个 $i$ 进去,然后把块内 shuffle。
这种情况下无论每次选择跳到哪个 $x$ 的下一次出现,都会跳过约 $x$ 个块。所以 $f_i$ 就大致会位于第 $i$ 个块中。
能 Hack 掉的做法:
忽略比 $f_{i-1}-n$ 还小的 $f_{j}$。
显然在该数据下忽略不掉多少转移。
设置阈值 $lim$,转移只考虑 $x\le lim$ 的 $x$ 的下一次出现。
在该数据下无论选择什么 $x$ 跳都大致是用 $1$ 的代价跳过 $1$ 个块,所以每个 $x$ 的优劣性是均等的,不能忽略较大的 $x$。
针对这个乱搞还可以进一步把块间也 shuffle,效果会更好。
数据太大了就不放上来了。
upd:制裁成功!