• Codeforces 994


    994 F

    题意

    (n) 个物品,有 (a_i,b_i) 两个属性,从中选出若干物品是的对于选出的物品集合 (S) , $$frac{sum_{iin S} a_i}{sum_{iin S} b_i}$$ 最小,并输出最小值,对于每一个 (jin C_U S),必须有一个 (iin S) 与之匹配,使 (a_i>a_j)

    Examples

    Input
    6
    8 10 9 9 8 10
    1 1 1 1 1 1
    Output
    9000
    Input
    6
    8 10 9 9 8 10
    1 10 5 5 1 10
    Output
    1160

    01分数规划入门
    本题只需要用到其中的二分。
    我们把每个任务按 (a_i) 从大到小排序,对于二分出的一个值,我们用 (dp) 构造一个方案检验是否可行。具体方法是检查有没有一个 (sum_{iin S}a_i-x*b_i<0)
    (dp[i][j][k]) 表示选到第 (i) 个任务时,有 (j)(>a[i]) 的任务未匹配,有 (k)(=a[i]) 的任务未匹配。
    转移方程:
    (dp[i][j][0]=min(dp[i][j][0],dp[i-1][j-k+1][k])(a[i]<a[i-1]且j-k+1≥0))
    (dp[i][j][1]=min(dp[i][j][1],dp[i-1][j-k][k]+a[i]-x*b[i])(a[i]<a[i-1]且j-k≥0))
    (dp[i][j][k]=min(dp[i-1][j+1][k],dp[i-1][j][k-1]+a[i]-x*b[i])(a[i]=a[i-1]且k≥1))
    (dp[i][j][k]=dp[i-1][j+1][k](a[i]=a[i-1]且k=0))

  • 相关阅读:
    跨域问题
    Django缓存机制
    Django Reat Framework --- 版本控制
    Hellow!
    回忆
    突然看见新评论通知
    [退役前的小声bbbbbbbbbbbbbbbbbbbbbb]
    【题解】【CQOI2018】解锁屏幕(玄学优化)
    solution
    1009-自闭++
  • 原文地址:https://www.cnblogs.com/BlogOfchc1234567890/p/10322845.html
Copyright © 2020-2023  润新知