UVA - 1379 Pitcher Rotation (dp+贪心)

该博客探讨了UVA 1379问题,通过动态规划和贪心算法优化解决投手轮换问题。在考虑投手出场的四天维度限制和可能的重复对阵情况下,博主提出只需记录每支球队最近五场的最优投手,并使用滚动数组降低空间复杂度。转移方程中涉及没有赛事和有赛事时的状态更新,揭示了问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

分析

因为要记录前四天的出场的投手,所以需要有四个维度用来记录投手的编号,但是投手最多有100个,这样的话就超出了空间,而且时间也会超出,所以使用贪心来优化,因为对阵一个球队最多需要5个投手(极端情况下连续6天对阵同一支球队,第6天和第1天的出场投手可以相同),这样的话对于每只球队,只需要记录对应他的胜率最高的5个投手就行了,出场的一定是这5人中的一个,那么维度大小就可以是6(剩余一个给没有比赛时,不需要球手出场),使用滚动数组压缩空间,状态dp[i][a][b][c][d]的累计胜利期望,i代表第i天,其中a,b,c,d分别代表第i-3,i-2,i-1,i天出场的投手
转移方程:如果第i天没有赛事, d p [ i + 1 ] [ b ] [ c ] [ d ] [ 0 ] = m a x ( d p [ i + 1 ] [ b ] [ c ] [ d ] [ 0 ] , d p [ i ] [ a ] [ b ] [ c ] [ d ] ) dp[i+1][b][c][d][0]=max(dp[i+1][b][c][d][0],dp[i][a][b][c][d]) dp[i+1][b][c][d][0]=max(dp[i+1][b][c][d][0],dp[i][a][b][c][d])
如果有赛事, d p [ i + 1 ] [ b ] [ c ] [ d ] [ i d ] = m a x ( d p [ i + 1 ] [ b ] [ c ] [ d ] [ i d ] , d p [ i ] [ a ] [ b ] [ c ] [ d ] + p i t c h e r [ r i v a l [ i ] ] [ i d ] . g r a d e ) dp[i+1][b][c][d][id]=max(dp[i+1][b][c][d][id],dp[i][a][b][c][d]+pitcher[rival[i]][id].grade) dp[i+1][b][c][d][id]=max(dp[i+1][b][c][d][id],dp[i][a][b][c][d]+pitche

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值