luogu P2577午餐(动态规划)

https://www.luogu.org/problemnew/show/P2577

题解

这其实是一个背包问题的变形,如果只有一个窗口的话,对于排队打饭的时间是固定的,那么只要按照谁吃的慢谁先上就可以得出最优值。

这道题有两个窗口,贪心的方法还是一样的,但是需要考虑分配问题。
dp[i][j][k]: 下标:前i个人在窗口1花了j的打饭时间,在窗口2花了k的打饭时间。值: 前i个人最小的用餐时间。

设打饭时间为a,吃饭时间为b
状态转移方程很容易写出来:
考虑决策:

  1. 第i个人打饭+吃饭的时间被前i-1个人的总时间覆盖。
  2. 第i个人打饭+吃饭的时间不被前i-1个人的总时间覆盖。

在窗口1打饭
d p [ i ] [ j ] [ k ] = m i n ( d p [ i ] [ j ] [ k ] , m a x ( d p [ i − 1 ] [ j − a ] [ k ] , j + b ) ) dp[i][j][k] = min(dp[i][j][k], max(dp[i-1][j-a][k], j+b) ) dp[i][j][k]=min(dp[i][j][k],max(dp[i1][ja][k],j+b))

在窗口2打饭
d p [ i ] [ j ] [ k ] = m i n ( d p [ i ] [ j ] [ k ] ,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值