首先考虑n等于m的情况,这时候每个数字都会选,则进项确定,不确定的是代价(被减去的值),这时候策略是比较简单的,代价(bi)越大的值越先选……。 然后考虑n=m+1时候的情况,这个问题相比前一个问题就是要剔除一个值了,这时候可以看成一个递增的问题,即先处理m个,再考虑最后一个。这时候先把前m个值按照bi排序,再计算第m+1个元素取代第i个元素的增益,如果最大增益能大于0,则取代并更新备用的数组,否则备用数组不动(这部分就算按照一定策略,时间复杂度o(n)),备用数组就是我们选择的m个数,按照第一个问题的策略,能得出此时的结果。 最后,考虑n>m+1,这时候能不能分解成一系列n=m+1的子问题???如果能分解的话,就按照前一步的步骤就可以计算了
点赞 评论

相关推荐

01-11 08:47
门头沟学院 Java
choumoduji...:读研的目的就是为了以最快的速度和最低的要求完成“学校”规定的毕业标准,而不是所谓课题组的要求
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务