1 条题解

  • 0
    @ 2025-8-24 21:17:52

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Ag2WO4
    Ag2WO4是钨酸银的意思哦~

    搬运于2025-08-24 21:17:51,当前版本为作者最后更新于2025-03-07 09:13:51,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    连续的若干次回合内显然优先磨刀,令在 mm 回合内磨了 pp 次刀则总伤害为 [iA+dA(mp)]p[\text{iA+dA}(m-p)]pdp2+(iA+dAm)p-dp^2+(\text{iA+dA}m)p,它是一个二次函数,其最大值在 b2a-\frac{b}{2a}iA+dAm2d\frac{\text{iA+dA}m}{2d} 处取到,由于二次函数的对称性离它最近的整数值就是取整时的最大值。直接模拟每轮能否一刀斩,能就输出,否则攒大招,同时模拟剩余血量,战士死亡时强制清空大招。注意特判 dA=0\text{dA=0} 时不要磨刀。

    i,a,h,d,m=map(int,input().split());m=n=q=0
    for j in map(int,input().split()):
        m+=1;q+=1;n+=j;o=int((a+m*d)/2/d)+(1 if(a+m*d)/2/d>.5+int((a+m*d)/2/d)else 0)if d else 1<<30
        if(a+d*(m-min(o,m)))*min(o,m)>=h:print(q);exit()
        if n>=i:h-=(a+d*(m-min(o,m)))*min(o,m);m=n=0
    print(-1)
    
    • 1

    信息

    ID
    6732
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者