题意
给你n个字符串,这些字符串都不是互相的前缀,再给你一个模式串。模式串由k个其中的字符串任意排列组成。求这个模式串是从中选k个按照字典序排列组成的第几个串?
思路
用全排列的方法,1~n表示前n个字符串,用字符串哈希的方法把他们压缩成数字放在map里映射字符串的序号。
然后遍历模式串。对于每找到一个字符串,按照(比此序号小的字符串-前面已经用掉的字符串的个数)*剩下的位子的全排列数量乘以原先算出来的种数,然后把这个新找到的字符串add到树状数组中,用来标记已经用掉的字符串的个数。
看!代码
1 |
|