题意
给一个字符串$t$,和一个长度为$m$的数组$b[]$,要求构造一个字符串$s$,$s$中的字符都出现在$t$中,对于$s[i]$而言,对于任意$j$,如果有$s[i]<s[j]$,则$\sum abs(i-j)=b[i]$,即$i$到所有比$s[i]$大的下标距离之和等于$b[i]$
分析
字符串$t$提供的就是每个字符的数量,我们发现对于字符最大的位置,$b[i]$肯定为$0$,然后次大的位置,$b[i]$被这些最大的位置影响,以此类推,我们保存一个已经填进去的数组,然后每一次枚举的时候将这个位置与数组中的数求绝对值之和,因为已经填进去的字符肯定比当前位置字符要大,所以如果这个和等于$b[i]$,则这个数这一轮是可以填的,然后就是从大到小枚举字符,如果字符数比当前填的个数大,则选择,否则选小的字符
1 |
|