康托展开笔记
变进制数
定义
所谓变进制数,就是每一位进制不一定相同的数,形式化的来讲:
对于一个变进制 , 表示第 位的一个 相当于第 位的一个 .特别的,
变进制数转十进制数
就像 进制数转十进制数一样, 设变进制数第 位是 , 那么转成十进制就是
十进制数转变进制数
就像十进制数转 进制数一样, 设变进制数第 位是 , 十进制数为 , 那么转成变进制就是
康托展开
用于求一个排列的排名.
对于排列的每一位,分别考虑有多少排列之前位和这个排列一样,这一位比这个排列小, 显然这样可以做到不重不漏
设排列是一个 的排列,对于排列的第 位,比它小的排列的数量就是 中第 位以及之前没有出现的比第 位的数小的数的数量, 再乘上
就是先使这一位比原来小,后面几位随便排。
最后把答案加起来就行。
通过树状数组维护比当前数小的没有出现的数的数量可以优化到