【SHOI2017】分手是祝愿题解(dp毒瘤)

· · 题解

50分部分分入手

其实有80分

首先考虑k=n的部分分

正确性:

正解

首先若最小步数小于等于k,直接输出ans\cdot n!就好了

问题在于最小步数大于k的情况

容易发现上面那个操作序列是固定的

用一个01序列表示每个点需不需要操作(例子:101100表示1,3,4需要被操作)

然后容易发现最优的操作次数即为这个序列中1的个数,也就是说和序列长什么样子无关,只关心有多少个1

所以考虑设f[i]表示序列中有i1的期望操作次数

然后是玄学推式子

发现这个东西长成这个样子f[n]=f[n-1]+常数,f[n-1]=f[n-2]+常数

然后大胆猜想不需要求证,加的这个常数(设为g[i])可以递推出来

然后g[i]就可以倒着递推出来了

接着f[i]也可以正着递推出来

dp式子总结