P2524 Uim的情人节礼物·其之弐(全排列-排列位置【双射】-康托展开)

P2524 Uim的情人节礼物·其之弐

题目描述

前传:详见洛谷P2525

Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。

Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。

输入格式

第一行一个整数N,表示有N个数。

第二行一个整数X,表示给出的排列。

输出格式

一个整数,表示是第几小的字典序。

输入输出样例

输入 #1复制

3
231

输出 #1复制

4

说明/提示

1<=N<=9

输入的排列没有空格

初始思路:

展示逆序数规律

//12   0
//21   1

//123  0
//132  1 
//213  1
//231  2
//312  2
//321  3

//1234 0
//1243 1
//1324 1
//1342 2
//1423 2
//1432 3
//2134 1
//2143 2
//2314 2
//2341 3
//2413 3
//2431 4

//12345 0
//12354 1
//12435 1
//12453 2
//12534 2
//12543 3
//13245 1
//13254 2
//13425 2
//13452 3
//13524 3
//13542 4
//14235 2
//14253
//14325
//14352
//14523
//14532

可见,0 1 1 2 2 3/1 2 2 3 3 4/ 2 3 3 4 4 5/……每六个一循环。嗯……,走偏了。
右边儿数字看不见哈
显然,数位越多的排列会涵盖数位更少的全排列,换句话说,数的排列位置等于每一个子数位(n-1,n-2,…, 1位数)全排列数量乘以(n, n-1, n-2, …,2子数位加一)数位上的数-1的和,最后记得加上它本身哦!
偶然发现,这居然就是题目想考的康托展开!!

康托展开

概念:
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 --来源于度娘

双射大概就是给排列得位置,给位置得排列了。

康托展开的作用:
康托展开的作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值