模拟88 题解

A. 军训队列

仔细看题,会发现问题是随便交换位置。

为了使答案更小,显然可以进行排序后$dp$。

有$dp_{i,k}=dp_{j-1,k-1}+(a[i]-a[j])^2$。

拆开平方式会发现是最简单的斜率$dp$式,而且$a$数组是单调的。

所以用单调队列维护一下凸包就完了。

因为在维护凸包的过程中需要计算交点,所以避免除$0$,要$unique$一下。

 

 

 

B. 山屋惊魂

模拟题。

设$f_{i,j}$表示$i$个色子,投出$j$的概率。

$dp_{i,j,k,u,v}$表示$i$步之后,属性阶分别为$j,k,u,v$的概率。

按照题中说的做,暴力转移就完了。

不需要关注失败的情况,只要最后用$1$减去成功的概率就完了。

 

 

 

C. 彩球问题

观察数据范围,发现似乎是状压题。

暴力状压复杂度不是很对,所以可以分组状压。

个数相同的球是等价的,可以分在同一组里,同一组内的状态可以排序,大大减少状态数。

所以最终的状态数只有一万多,暴力转移就完了。

然而正解更加优秀一些。

实际上问题可以不断地划分为子问题,而且只需要关注最后一位的小球个数,并不关注每个小球属于哪一组。

所以设$f_{i,j,k,d}$,表示1个球的剩下$i$个,2个球的剩下$j$个,3个球的剩下$k$个,最后一个的个数为$d$。

$O(1)$转移,复杂度是$O(n^3)$的。

posted @ 2019-10-26 12:04  skyh  阅读(165)  评论(0编辑  收藏  举报