逆康托展开 + 高精度,抽屉原理 + set, 线段树分治 + 可撤销并查集

写了 200pts 挂了 110pts QwQ

# A. [常中 20180905 T1] 今天你 AK 了吗?

显然没有(

之前考过的一道题,逆康拓展开板子题。

然而 ** 得写高精度!!!** 而且还不是一般的高精度!!!

于是随手拿了 60pts 的模拟分跑路了。

我的做法是记一个阶乘,然后每一位依次处理,对于每一位通过阶乘数组直接计算出该位是多少。

# B. [常中 20180903 T2] 小奇的数列

考场上看出来可以用抽屉原理了,然而没开 longlonglong\ long 挂了 60pts 啊啊啊

那么这题就是抽屉原理,长度大于等于模数 pp 的询问答案就是 0,这个应该不难证明吧。

然后直接对于其他的询问两层循环暴力算答案可以得到 90pts 的好成绩,这样写期望时间复杂度 O(mp2)O(mp^2),数据水了。

考虑优化找答案的过程。

我们记录一下区间 [l,r][l, r] 的前缀和,每次枚举到一个点时直接找它的前驱,可以证明它减去它的前驱的数是最小的。

所以写个 set 维护一下即可,我考场上写了个平衡树,然后一直死循环,没调出来,但是就算调出来了也就 30ptes QwQ

# C. [常中 20180903 T4] 寻路

毒瘤 DS 题。

考场写了个 50pts 的暴力,结果多测没清空,遗憾离场了(

线段树分治 + 可撤销并查集

我们把所有询问离线下来,然后给它线段树分治一下,用并查集维护两个点是否联通。

两个树合并时,新的树的直径只会在原来的两棵树的直径的四个点中组合一下,可以证明是对的。

然后就大力写代码即可(

code

更新于 阅读次数