当前位置: 首页 > 知识库问答 >
问题:

最小化在一个圆圈中分配糖果的步骤

仲孙温文
2023-03-14

在一个圆圈中有n个孩子。他们每个人都有一些糖果(可能是负的、正的或零的)。他们可以一次给邻居一颗糖。最终的结果是,他们都应该有零糖果在最小的步骤。

假设我们有4个带有(-4,-2,4,2)糖果的孩子,那么序列将是

  1. (-3,-2,4,1)
  2. (-2,-2,4,0)
  3. (-2,-1,3,0)
  4. (-2,0,2,0)
  5. (-2,1,1,0)
  6. (-2,2,0,0)
  7. (-1,1,0,0)
  8. (0,0,0,0)

等等。

我的解决方案的复杂性导致了一个TLE。我可以做些什么来降低复杂度?

共有1个答案

傅高逸
2023-03-14

我不认为你需要在细节上绕来绕去。将每个地方的糖果数量写成X1,X2,X3,x4。假设X1从它的左边接收到k个糖果(也就是说,对于X4)。在这个之后,它有x1+k个糖果,所以它必须把这个传递到它的右边。那么X2将有X1+X2+k个糖果,所以它必须把这个传递到它的右边。然后X3将有X1+X2+X3+k个糖果,所以它必须将此传递给X4。我们知道X4通过了k个糖果,这会检查(假设X1+X2+X3+X4=0,如果不是,就没有解)。

这需要k+X1+k+X1+X2+k+X1+X2+k+X1+X2+X3+k步,所以如果我们猜出k,我们就知道要走多少步。K的最佳值是多少?如果我们增加k,那么如果有更多的+ve项X1+X2+…k,我们就增加了和,如果有更多的-ve项,我们就减少了。所以k的最佳值是其中正好有一半项k,X1+k。是+ve,确切地说是半ve,因为如果不是这种情况,我们可以增加或减少k,使事情变得更好,选择的k值是,0,X1,X1+X2,X1+X2+x3的中位数。

对于你的例子中的n=4的情况,我已经说明了这一点,但我希望你能由此得出一般n的答案。

 类似资料:
  • 我试着把第二个播放器放在一个有圆角的框架内(这个答案和这个答案),但是播放器总是会跳出父框架并绘制视频的完整矩形。 我发现这个解决方案使用GLSurfaceView,但是这个解决方案使用经典的MediaPlayer而不是ExoPlayer。

  • 本文向大家介绍jquery+css3实现会动的小圆圈效果,包括了jquery+css3实现会动的小圆圈效果的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery+css3实现会动的小圆圈效果。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 更多关于jQuery特效相关内容感兴趣的读者可查看本站专题:《jQuery常见经典特效汇总》及《jQuery动画与特效用法总

  • 题目链接 NowCoder 题目描述 让小朋友们围成一个大圈。然后,随机指定一个数 m,让编号为 0 的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续 0...m-1 报数 .... 这样下去 .... 直到剩下最后一个小朋友,可以不用表演。 解题思路 约瑟夫环,圆圈长度为 n 的解可以看成长度为 n-1

  • 我正在寻找一些解决方案,如果给定一组具有2D中心点和半径的圆,则在中返回一个最小子集,该子集完全覆盖具有2D中心点和半径的特定圆。最后一个圆圈不在中。 我已经选择了圆形,但如果我们把它们改成正方形、六边形等也没关系。

  • 我在一些项目上使用字体真棒,但我有一些事情,我想用字体真棒图标做,我可以很容易地调用这样的图标: 所有图标是否可能始终处于带边框的圆形中?像这样,我有一张照片: 使用 会产生效果,但问题是图标总是比旁边的文本或元素大,有什么解决方案吗?

  • 将求解第一个点的第一个圆放置在适当位置。 通过检查这两个点之间的距离是否小于2*r来求解最小圈数中的第二个点。并继续处理所有n个点。我认为是贪婪算法,但它是最优的,线性的吗?