【算法设计与数据结构】URAL 1167. Bicolored Horses(动态规划求解)

题目链接:

http://acm.timus.ru/problem.aspx?space=1&num=1167

题目大意:

有N匹马,分为黑马和白马,要把他们安排到K个马槽中,最后所有马槽都不能是空的。我们将N匹马排成一列,要求按顺序安排马槽,比如前P1匹马安排在第一个槽,接下来的P2匹马安排在第二个槽。对于某一个马槽,设有i匹黑马和j匹白马,求使得所有马槽的i*j之和最小的方案,输出最小值。

思路:

前i个马槽放j匹马,可转移为:前i-1个马槽放m匹马(i-1 <= m < j),第j个槽放j-m匹马,遍历所有的m,取最优值。
设dp[i][j]表示前i个马槽放j匹马的最优值,black[k]、white[k]分别表示前k匹马中的黑马和白马数量。
则状态转移方程为:

for (int m = i-1; m < j; m++)
    dp[i][j]=min(dp[i-1][m]+(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值