Skip
容易得到 (f[i]=minlimits_{a_jle a_i}(f_j+sumlimits_{i=1}^{i-j+1} i+v[i])),最后后转移给 (f[n+1])
设 (y_k=frac{k^2-k}2+f_k),那么如果 (j>k) 且 (frac{y_j-y_k}{j-k} >-i) 则 (j) 优于 (k)
用 (cdq),处理左边对右边的贡献的时候边归并边建凸包
String
考虑 (kle 8) 的时候是一个记搜,把每个出现次数的数量压到四位上面(因为最多可能是 (8),所以要多压一下)
搜的时候存当前长度,当前的状态,剩余排名,和上一个的数
转移的时候枚举所有的字符记搜就好
考虑如何扩展到 (kle 26),因为总数很大,正序枚举 (a o z) 直到 (kle 8) 即可
最后一步不好想,前面的记搜没做出来不太应该
Permutation
相邻两个排列,对于第 (k) 位发生了变化,此时 (k) 位以后一定是由(n-k o {n-1}) 变为了 (x_{k}+1,x{k}+2,x{k}+3,...n)
方案数唯一,某一位的变化也可以快速计算。
而前面只要乱选就好了,使用组合数。
于是我们只要枚举第 (x(x≤k)) 位当前是 (y) 的贡献来进行计算,用组合恒等式优化
复杂度 (Theta(n))
理解还是不太深刻,先鸽掉