<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">zoj 1088题目题目大意是,对n栋楼停电,先停第一栋,再隔m栋停一栋。数到最后一栋后从头循环计数,已经断电的不参与计数。要选取适当的m,使得即使其他楼都没电了,但第二栋楼仍然有电。 </span>
如果将该题视为普通的模拟算法,其时间复杂度将高达O(m*n)。由于题目给了很充足的时间和很小的m、n范围,一般的模拟算法即可完成。但有没有更高效的算法呢。
常见的优化方法是每断掉一栋楼的电,问题规模就减一,这样时间复杂度就降到了O(n)。 下面转帖内容:

博客探讨了ZOJ 1088题——约瑟夫环问题的优化算法,通过递推公式实现时间复杂度从O(m*n)降低到O(n),并介绍了利用j(2^n)=1的特性进一步优化,同时提到了使用 Vim 编程工具的便利性。
最低0.47元/天 解锁文章
2117

被折叠的 条评论
为什么被折叠?



