6.午枫的密码本
个人感觉出简单了
思路:
不要看到 k≤10100k≤10^{100}k≤10100 就吓*了。
想这样一个问题:当 k 大于或等于 [不同字符数] 时会发生什么。(想通了你就会做这道题了)
答案是 LIS 就等于 [不同字符数] 。为什么呢?因为对于每个重复出现的字符串可以选择任意一个字符,我们就可以
* 第一轮,选择ASCLL最小的字符;
* 第二轮,选择ASCLL第二小的字符;
......
* 第 [不同字符数] 轮,选择ASCLL最大的字符。
这样,k 大于或等于 [不同字符数] 时,答案是 [不同字符数] 。
那么如果k不大怎么办,直接用O(nlogn)O(nlogn)O(nlogn)的LIS方式求解!(应该都背下来了)
为什么不会超时?因为:最多不同字符只有不到 100 个,而字符串长度小于 100.
我的代码:(留了很多优化空间)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------