最大限度地提高孩子的幸福感
Maximum children happiness
给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、2、3和4.
-
想要糖果1,5,6,7,8,9 .
-
想要糖果2、10、11、12、13、14和15.
-
要糖果3、16、17、18、19、20和21.
-
要糖果4、22、23、24、25、26和27.
你的算法只会让孩子1开心。但是你可以让2、3、4和5开心。
由于这是一个正在进行的编程竞赛中的问题,我不能给你太多的答案,但会把你推向正确的方向。你正在解决的问题是np完全的,因为它可以被简化为最大独立集,因此它只能在一般情况下使用蛮力来解决,也就是尝试所有的组合。您可以通过检查新添加的集合是否与其他集合不相交来减少计算量,这样您可以跳过许多无效的组合。
相关文章:
- 更改"child's parent's style sheet"时如何将孩子的样式表重置为 Qt 默认样式表?
- 为什么 isVisible 在 QWidget 孩子中不起作用
- OOP使用不同的结构与孩子一起构建建议
- c ++如何将模板应用于模板类的孩子/朋友?
- 如何防止父进程在孩子死后丢失控制台输入?
- 我可以制作一个基于孩子具有不同回报的虚函数吗?
- C 从子线中杀死所有父母的孩子
- 为什么父母的方法在孩子被摧毁后仍然存在
- 有没有办法按类名找到 QObject 孩子?
- 如何在树上像孩子一样使用unique_ptr
- 破坏的父母和孩子的顺序
- 如果是双重注册,如何从Boost树中删除孩子
- 将PID从孩子转移到父母
- 使用boost.process同时读取和写入孩子的STDIO
- 从家长处获取孩子的类名
- 在我关闭刚开始的孩子对话框并进入父母对话框之后,我的QT桌面应用程序不断崩溃
- 添加一个孩子(引擎统一)
- 如果孩子不需要父母班级的所有受保护成员,这是不好的班级设计吗?
- 我怎样才能得到一个QObject的孩子?
- 最大限度地提高孩子的幸福感