逆康托展开 + 高精度,抽屉原理 + set, 线段树分治 + 可撤销并查集
写了 200pts 挂了 110pts QwQ
# A. [常中 20180905 T1] 今天你 AK 了吗?
显然没有(
之前考过的一道题,逆康拓展开板子题。
然而 ** 得写高精度!!!** 而且还不是一般的高精度!!!
于是随手拿了 60pts 的模拟分跑路了。
我的做法是记一个阶乘,然后每一位依次处理,对于每一位通过阶乘数组直接计算出该位是多少。
# B. [常中 20180903 T2] 小奇的数列
考场上看出来可以用抽屉原理了,然而没开 挂了 60pts 啊啊啊
那么这题就是抽屉原理,长度大于等于模数 的询问答案就是 0,这个应该不难证明吧。
然后直接对于其他的询问两层循环暴力算答案可以得到 90pts 的好成绩,这样写期望时间复杂度 ,数据水了。
考虑优化找答案的过程。
我们记录一下区间 的前缀和,每次枚举到一个点时直接找它的前驱,可以证明它减去它的前驱的数是最小的。
所以写个 set 维护一下即可,我考场上写了个平衡树,然后一直死循环,没调出来,但是就算调出来了也就 30ptes QwQ
# C. [常中 20180903 T4] 寻路
毒瘤 DS 题。
考场写了个 50pts 的暴力,结果多测没清空,遗憾离场了(
线段树分治 + 可撤销并查集
我们把所有询问离线下来,然后给它线段树分治一下,用并查集维护两个点是否联通。
两个树合并时,新的树的直径只会在原来的两棵树的直径的四个点中组合一下,可以证明是对的。
然后就大力写代码即可(
code