A. Skip

一眼决策单调性,但是感觉因为带个权值就不好处理了。

实际上对权值开个线段树,然后直接在线段树上维护决策单调性就完事了。

而且这个式子是一个显然的斜率优化 dp ,在权值线段树上维护凸包也挺套路的。

感觉这题没做出来比较可惜,没有想到通过对权值开线段树,来实现权值的无关操作。

 

B. String

$80$ 分做法比较显然。

求第 $k$ 大字典序,肯定要逐位确定。

因为数据范围很小,所以状压然后 next_permutation 把每个字母填在对应位置就行了。

考试最后 $20$ 分钟测了一个 $k=8,n=10^{18}$ ,然后看着一串 $\text {abababa}$ 突然发现这个玩意在 $n$ 很大的时候可以优化。

优化了一点发现跑的贼慢以为这不是正解就跑去打 T3 了。

考后才想到优化的不彻底,导致一个 $k!$ 没剪掉,就很难受。

 

C. Permutation

考虑字典序相邻的集合。

打表可知这样的集合存在第一个不同位,并且这一位上的数分别是 $x$ 和 $x+1$。

接着观察发现后面也挺有规律的。所以推个简单的式子就完事了。

一堆组合数*权值不好处理。

考虑提出权值来,然后发现组合数是一个对角线。显然交换成一列就可以直接算了。