• [AHOI2017/HNOI2017]大佬


    传送门

    这个题目和题面都很一言难尽

    我们发现保持自己的自信值非负和对大佬造成伤害没有关联,我们可以先(dp)出自己最多可以活几天

    (f[i][j])为前(i)天自信值为(j)时最多能怼大佬多少天

    (f[i][j-a[i]]=max(f[i-1][j]+1,f[i][j-a[i]))这个是不吃血包的情况

    (f[i][j-a[i]+w[i]]=max(f[i-1][j],f[i][j-a[i]+w[i]]))这个是吃血包的情况

    嗯,然后我们可以得出最多能拿出多少天怼大佬,假设为(day)

    然后再考虑怼大佬的问题,先大力(bfs+hash)求出所有能对大佬用嘲讽造成伤害的天数和攻击力的组合

    假设所有组合数是(k)

    不用嘲讽和只用一次嘲讽的情况很好判,下面讨论用两次嘲讽

    假设两次嘲讽伤害是(f1,f2),天数是(d1,d2),那么需要满足

    (f1+f2<=c[i],d1+d2<=day,f1+f2+day-d1-d2>=c[i])

    我们会发现满足第三个条件时必定满足第二个条件,可以忽略第二个

    大力枚举(O(mk^2)),一脸不能过的杨子

    (O(mk))好像一脸能过的亚子,想想怎么优化

    我们可以考虑,对所有组合按(f)排序

    第一个条件(f1,f2),可以弄两个指针,一个从小往大,一个从大往小

    第三个条件,我们移一下项得到(f1+day-d1>=c[i]+d2-f2)

    那么我们在移动第二个指针的时候记录一下最小的(d2-f2),然后对于每个(f1,d1)判断条件是否成立

  • 相关阅读:
    Java导出数据生成Excel表格
    JFinal极速开发框架使用笔记
    短信接口发送验证码倒计时以及提交验证
    quartz定时任务,已过期的内容自动下线
    cors解决Web跨域访问问题
    python之django直接执行sql语句
    Django中字典在html中的遍历
    Django 中的自定义分页标签
    myslq中插入时间当前时间
    mysql中排序
  • 原文地址:https://www.cnblogs.com/knife-rose/p/12623970.html
Copyright © 2020-2023  润新知