Hackerrank竞赛:动态编程

时间:2015-01-12 13:42:08

标签: algorithm dynamic-programming

我正在讨论hackerrank的竞赛问题(链接如下)

https://www.hackerrank.com/contests/w13/challenges/a-super-hero

据我所知,这是一个动态编程问题。我尝试了各种方法,但未能清除它。它有一个冗长的问题陈述,但我会尽量解释它。

您必须清除 n 不同级别,每个级别包含 m 敌人。可以通过击败该级别的任何一个敌人来清除每个级别。每个敌人都有一些子弹和一些力量。你需要尽可能多的子弹来击败他。击败敌人后,你可以拿下他的子弹,只能在下一级使用。所以,你必须告诉,最低不。在开始时完成游戏需要子弹

有关详细信息,请参阅链接。

不需要完整的解决方案。只是一些指示,提示就足够了。

1 个答案:

答案 0 :(得分:0)

实际上这个问题不是DP。这是一个二进制搜索问题。对答案进行二元搜索。对于每个子弹N的数量,每个级别都要贪婪。也就是说,在你可以杀死的敌人中(例如,你的力量不超过你现在的子弹),杀死那个在等级结束后给予你最多子弹的那个。请注意,在这里你需要减去杀死给定敌人所需的子弹数量。如果初始值N足以完成所有级别,则将其设置为您正在搜索的范围的新结尾。否则将N设置为新的开始(常规二进制搜索方法)。