因为种种原因没法去看讲解......
一开始楼主写的是个伪三维(第3维是0/1)正推DP,然后......内存占用达到了优秀的约 3.5G ......
之后想了各种方法优化,包括但不限于找转移剪枝,换状态等,后来想了两个邪门的:
1.使用vector之类的动态数组,只存储当前总圈数的全部状态,算完就删,最后一层的状态直接特判 i=m ( i 为总圈数)不保存直接算出来比较,空间复杂度大概是状态树倒数第二层的结点数?楼主忘了怎么计算了,但是直觉感觉还是得爆
2.在 m 足够大的情况下,换轮子的次数最大为 n−1 次,而二者在大数据下相差极大,因此状态树一定有很多单链,而这些单链的变化量可以通过一次预处理之后直接计算,因此可以想办法“跳链”,在不再进行其他决策转移的情况下直接常数时间算到叶结点然后直接对答案决策,这么搞由于过于抽象楼主一算不出空间复杂度二不知道怎么实现......
请教一下大家以上两种方法的可能性......
另外就是感觉正解搞不好是两种结合或者是第二种的“跳链”加上一些剪枝......