最大限度地提高孩子的幸福感

Maximum children happiness

本文关键字:孩子 幸福感 高孩子 最大限度      更新时间:2023-10-16

给N个不同的糖果和M个孩子。每个孩子要求K[i]不同的糖果,只有当他得到他要求的所有不同的糖果时,才会高兴

现在我想让快乐的孩子数量最大化。我该怎么分发糖果?

示例:让我们有N=4糖果和M=3孩子:

  • 第一个孩子需要2 (K[1])糖果,即:1和2
  • 第二个孩子需要2 (K[2])糖果,即:2和3
  • 第三个孩子需要2 (K[3])糖果,即:3和4

这里的答案是2,因为我最多只能让第一个和第三个孩子开心。

我的尝试:

给孩子糖果的数量,他们需要快乐的顺序(即K[i])。换句话说,你应该只给一个孩子糖果,如果你让所有的孩子都快乐,要求更少,每次你给一个孩子糖果,你必须给他们需要的全部数量。

这个解决方案正确吗?

是的,你错了。考虑:

  1. 想要糖果1、2、3和4.

  2. 想要糖果1,5,6,7,8,9 .

  3. 想要糖果2、10、11、12、13、14和15.

  4. 要糖果3、16、17、18、19、20和21.

  5. 要糖果4、22、23、24、25、26和27.

你的算法只会让孩子1开心。但是你可以让2、3、4和5开心。

由于这是一个正在进行的编程竞赛中的问题,我不能给你太多的答案,但会把你推向正确的方向。你正在解决的问题是np完全的,因为它可以被简化为最大独立集,因此它只能在一般情况下使用蛮力来解决,也就是尝试所有的组合。您可以通过检查新添加的集合是否与其他集合不相交来减少计算量,这样您可以跳过许多无效的组合。