Hot Start Up (easy version)\n题意\nn nn个数,大小为k kk的数组c o l d coldcold,h o t hothot,你有两个CPU,如果你选择的

1. Hot Start Up (easy version)\n题意\nn nn个数,大小为k kk的数组c o l d coldcold,h o t hothot,你有两个CPU,如果你选择的CPU的上一个进程和当前的进程一样,所用时间就是h o t hothot,否则c o l d coldcold。问你完成所有的进程的最短时间。\n\n思路\n很明显是一个动态规划问题,关键是动态规划数组代表的含义,这里是d p ( i , j , k ) dp(i k)dp(i,j,k),代表走到 i ii 的时候CPU1最后处理的进程是 j jj, CPU2最后处理的进程是 k kk。但这样肯定是要超时的,然后通过题目可以得到要去进行 i ii,i − 1 i - 1i−1 必须要完成,所以可以优化一维,这样就可以了。\nd p [ i ] [ j ] dp[i][j]dp[i][j]就代表进程处理到第 i ii 个位置的时候,CPU1最后处理的进程是 j jj(CPU2默认为 a [ i − 1 ] a[i - 1]a[i−1])这样就题目要求得到了转换方程:\nd p [ i ] [ j ] = m i n ( d p [ i ] [ j ] , d p [ i − 1 ] [ j ] + ( a [ i ] = = a [ i − 1 ] ? h o t [ i ] : c o l d [ i ] ) ) dp[i][j] = min(dp[i][j], dp[i - 1][j] + (a[i] == a[i - 1] ? hot[i] : cold[i]))dp[i][j]=min(dp[i][j],dp[i−1][j]+(a[i]==a[i−1]?hot[i]:cold[i]))\n和\nd p [ i ] [ a [ i − 1 ] ] = m i n ( d p [ i ] [ a [ i − 1 ] ] , d p [ i − 1 ] [ j ] + ( a [ i ] = = j ? h o t [ i ] : c o l d [ i ] ) ) dp[i][a[i - 1]] = min(dp[i][a[i - 1]], dp[i - 1][j] + (a[i] == j ? hot[i] : cold[i]))dp[i][a[i−1]]=min(dp[i][a[i−1]],dp[i−1][j]+(a[i]==j?hot[i]:cold[i]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值