1 条题解

  • 0
    @ 2025-10-27 22:22:10

    题目分析

    这是一个资源分配与时间规划问题,需要在满足金钱和声誉目标的前提下最小化天数。


    状态设计

    定义四维 DP 状态:

    dp[i][j][k][t]dp[i][j][k][t]
    • ii:当前职员总数
    • jj:当前金钱数
    • kk:当前声誉数
    • tt:广告发布后的等待天数(00 表示可发布广告,1,2,31,2,3 表示等待第 1,2,31,2,3 天)

    值为达到该状态所需的最少天数


    状态转移

    1. 不发布广告(t=0)

    • 分配 ll 个职员生产金钱,ili-l 个生产声誉:

      j=min(j+lx,max(A,z))j' = \min(j + l \cdot x, \max(A,z)) k=min(k+(il)y,B)k' = \min(k + (i-l) \cdot y, B)
    • 转移:dp[i][j][k][0]dp[i][j'][k'][0]

    • 发布广告(如果金钱足够):

      dp[i][jz][k][1]dp[i][j-z][k][1]

    2. 广告等待中(t=1,2)

    • 只能分配生产,不能发布新广告:dp[i][j][k][t+1]dp[i][j'][k'][t+1]

    3. 广告完成(t=3)

    • 招聘新职员,职员数 i+1i+1dp[i+1][j][k][0]dp[i+1][j'][k'][0]
    • 同时可以立即发布新广告:dp[i+1][jz][k][1]dp[i+1][j'-z][k'][1]

    算法流程

    1. 初始化dp[n][0][0][0]=0dp[n][0][0][0] = 0
    2. 状态遍历:按天数递增更新状态
    3. 终止条件jAj \geq AkBk \geq B 时更新答案
    4. 输出:最小满足条件的天数

    复杂度分析

    • 状态数O(40×20×20×4)64000O(40 \times 20 \times 20 \times 4) \approx 64000
    • 转移数:每个状态 O(20)O(20) 种分配
    • 总复杂度O(1.28×106)O(1.28 \times 10^6),完全可行

    样例验证

    输入1 2 3 4 5 6

    处理过程

    • 初始:n=1n=1 职员
    • 11 天:生产金钱 22 或声誉 33
    • 55 天:累计达到 A=5A=5 金钱,B=6B=6 声誉

    输出5,与样例一致。


    关键优化

    • 状态剪枝:金钱上限设为 max(A,z)\max(A,z),声誉上限 BB
    • 提前终止:找到可行解立即更新答案
    • 合理范围:职员数不超过 4040(初始 2020 + 最大招聘 2020

    该解法通过多维动态规划,完整建模了职员分配、广告招聘和时间进度的关系,高效求解了最优时间规划问题。

    • 1

    信息

    ID
    4321
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者