正题

题目链接:https://www.luogu.com.cn/problem/P4922


题目大意

题目好长直接放了

在崩坏 3 中有一个叫做天命基地的地方,女武神们将在基地中开派对与敌人们厮杀。

女武神们的攻击力为 atkatkatk,她们将进行资源保卫战!

天命基地中有 111个 boss,boss 的血量为 hphphp,boss 不会攻击女武神。

现在有一条长度为 nnn 的道路,道路的一头是 boss,另外一头是女武神需要保卫的资源,最开始 boss 每秒将会向资源移动 1 个单位长度。女武神们需要保护资源,所以她们要攻击 boss。

我们将整条道路分成 nnn 个格子,最开始资源在第 nnn 格,女武神在第 111 格,boss 在第 000 格。

因为女武神的手太短了,所以只有当 boss 到达女武神当前那一格的时候,女武神才会攻击 boss,攻击完之后女武神会后退一格。

女武神有以下 888 种攻击方式(每一格只能使用一种攻击方式)

  • 技能,造成 80%atk80\% atk80%atk 的伤害,并使 boss 获得 111 层燃烧 buff,在之后的每秒钟额外受到 10%atk10\% atk10%atk 的伤害。(燃烧buff可以叠加)
  • 闪避,造成 70%atk70\% atk70%atk 的伤害,并使 boss 时间暂停 5s5s5s。(5s5s5s 内 boss 无法移动且仍会受到燃烧伤害)
  • 大招,造成 120%atk120\% atk120%atk 的伤害,使 boss 时间暂停 5s5s5s。
  • 分支攻击,造成 70%atk70\% atk70%atk 的伤害,并使 boss 时空减速,使 boss 经过每一个格子的时间增加 1s1s1s。
  • 爱酱的炸弹,使 boss 获得 111 层燃烧 buff,并使 boss 愤怒,移速 +50%+50\%+50%。
  • 犹大的誓约,造成 60%atk60\% atk60%atk 的伤害,如果 boss 有燃烧 buff 则减少 1 层,使 boss 时间暂停 4s4s4s。
  • 奥托之光,造成 10%atk10\% atk10%atk 的伤害,如果 boss 有燃烧 buff 则清除 buff,使 boss 时间暂停 10s10s10s。
  • 律者之力,造成 80%atk80\% atk80%atk 的伤害,使 boss 的移动速度 +100%+100\%+100%。

现在给你所有的信息,让你帮助 disangan233 蒟蒻算一下,他的女武神能否在 boss 触碰到资源前战胜 boss。

如果可以,输出 boss 死亡时距离资源最远的格子编号。如果不可以,请输出对 boss 造成的最大伤害。

对于 100%100\%100% 的数据,保证:
n≤10,000atk≡0(mod10)atk≤10,000max⁡Atk≤264−1n\leq 10,000 \qquad atk\equiv 0(\bmod\ 10)\qquad atk\leq 10,000\qquad \max Atk\leq 2^{64}-1 n≤10,000atk≡0(mod 10)atk≤10,000maxAtk≤264−1


解题思路

快三年之前的比赛上面写的题了,那时候只会写O(n3)O(n^3)O(n3)的dpdpdp。(什么一雪前耻)

首先有很多技能一看就是没有用的,有用的只有技能(叠燃烧),分支攻击(叠减速),大招。

然后大招一定是最后放的,还有一个就是nnn的范围好像是可以O(n2)O(n^2)O(n2)卡一下的。

设fi,jf_{i,j}fi,j​表示到前iii次,jjj层燃烧,然后剩下i−ji-ji−j层就是减速了。

这样dpdpdp就好了,时间复杂度O(n2)O(n^2)O(n2)因为j≤ij\leq ij≤i所以常数是12\frac{1}{2}21​


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll unsigned long long
using namespace std;
const ll N=11000;
ll n,hp,atk,maxs,mins,f[2][N];
signed main()
{scanf("%lld%lld%lld",&n,&hp,&atk);atk/=10ull;if(!atk)return printf("0\nMiHoYo Was Destroyed!");mins=n;for(ll i=0;i<n;i++){for(ll j=0;j<=i;j++){ll k=i-j+1;//燃烧j层 减速k层 maxs=max(maxs,f[i&1][j]+atk*j*(n-i)*(5ull+k)+(n-i)*atk*12ull);mins=min(mins,i+(hp-f[i&1][j]+(j*5ull+j*k+12ull)*atk-1)/(j*5ull+j*k+12ull)/atk);f[~i&1][j+1]=max(f[~i&1][j+1],k*j*atk+atk*8ull+f[i&1][j]);//叠燃烧f[~i&1][j]=max(f[~i&1][j],k*j*atk+atk*7ull+f[i&1][j]);//叠减速 }}if(maxs>=hp)printf("%lld\nTech Otakus Save The World!",mins);else printf("%lld\nMiHoYo Was Destroyed!",maxs);return 0;
}

P4922-[MtOI2018]崩坏3?非酋之战!【dp】相关推荐

  1. 计算机音乐非酋,非酋在线试听_薛明媛_高音质歌曲_九酷音乐

    [ti:非酋] [ar:薛明媛/朱贺] [al:非酋] [by:] [offset:0] [00:00.19]非酋 - 薛明媛/朱贺 [00:00.95]词:朱鸽 [00:01.08]曲:朱鸽 [00 ...

  2. 非酋如何计算花多少钱才能抽到SSR

    心血来潮,打算写一写抽奖的问题,目前,国家政策规定网游必须公布抽卡的概率,然而公布了概率对玩家就有用了吗?公布了概率就能提高中奖率?抽卡类的游戏有时候真的有可能令玩家怀疑人生,为什么自己抽了好几千块, ...

  3. 非酋用计算机,拯救非酋带你入欧 炉石传说玄学开包经验

    原标题:拯救非酋带你入欧 炉石传说玄学开包经验 众所周知炉石传说是一款暴雪推出的有魔兽背景的卡牌游戏,既然叫卡牌游戏那要想在游戏中战无不胜,就必须得有好卡.如何才能获得好卡,当然是开卡包了.但是这个开 ...

  4. Python关于抽奖的思考——不当非酋

    Python关于抽奖的思考--不当非酋 目录 Python关于抽奖的思考--不当非酋 一.文章主题 二.抽奖设计思路 第一步:需求 第二步:建立奖品列表 第三步:概率实现 第一种:通过区间实现 第二种 ...

  5. 微信摇心愿如何选不同服务器,微信摇心愿几率如何?非酋玩家实测皮肤概率,20分钟摇到嘻哈皮肤...

    原标题:微信摇心愿几率如何?非酋玩家实测皮肤概率,20分钟摇到嘻哈皮肤 大家好欢迎收看本期的王者荣耀内容,小新说游戏给你带来有趣的游戏资讯,今天小新要给大家带来的是微信摇心愿几率如何?非酋玩家实测皮肤 ...

  6. 非酋用计算机弹唱,·181· 《非酋》弹唱谱

    原标题:·181· <非酋>弹唱谱 非酋 参加过2016年超级女声并进入全国百强的四川大眼萌妹薛明媛具有辨识度极高的性感慵懒嗓音,特别适合演绎这首俏皮又时尚的欢快情歌.来自吉林的90后创作 ...

  7. ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》

    崩坏3.战双,虽然是手机游戏,作为一个PC党,我还是热衷于用电脑玩游戏. 用电脑玩游戏可以把画质全部开到最大,依旧可以顺畅地进行游戏. 手机就不行,即使是苹果,把画质拉满,依旧会有卡顿. 特别是崩坏3 ...

  8. 【2023考研】双非二本非科班一战上岸杭电经验帖

    一.作者背景 我本科就读于黑龙江省某二本双非大学的物联网工程专业,专业排名一般就在20%左右,在校期间无科班竞赛经验,只参加过大学生数学竞赛和杭电要求的PAT考核乙级,项目方面只参加过大创比赛以及专业 ...

  9. 非酋用计算机,《神武4》电脑版:洗宠100次必变异 再也不用流非酋泪

    在5月22日,官方对<神武4>电脑版的服务器进行了每周的例行维护,同时也悄悄上线了众多的福利更新.其中最吸引玩家的还当属在洗宠方面进行的改动,洗宠100次必然变异,除了这个福利更新外还有什 ...

最新文章

  1. shell脚本中的变量
  2. html判断数字数据的大小写,判断一个字符是否是数字、还是大小写字母
  3. centos7数据库mysql+mariadb
  4. iOS进阶 - iOS如何监控崩溃
  5. 子类能否访问或覆盖父类的private方法
  6. LOJ-10096(强连通+bfs)
  7. linux如何卸载自带的openJdk,并且安装jdk1.8
  8. linux prel安装_Linux下Perl的安装(转)
  9. vue获取table一列数据_vue中比较重要的小知识点
  10. [转]影响Cache的几个HTTP头信息
  11. 学习 About iOS App Programming 第一天
  12. SQL 格式化输出 千分位 ¥货币格式
  13. RAID磁盘阵列管理
  14. 什么是现汇买入价、现钞买入价、卖…
  15. 机器人鸣人是哪一集_火影忍者596集剧情介绍番外篇九尾抢夺指令_鸣人VS机器人版鸣人...
  16. appinventor java,(1) AppInventor高级组件之JavaReflector系列教程 概述
  17. 第二节 构成人体必需的营养素
  18. ARM开发板系统移植-----rootfs的制作
  19. amp;#9733;平衡法则在生活中的应用
  20. NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp

热门文章

  1. python怎么处理异常然后继续_Python异常处理-返回行,继续
  2. python join_python join 和 split的常用使用方法
  3. oracle的排序分页,oracle 排序分页 高效sql语句
  4. Java连续获取两个输入,java 获取控制台的输入的两个方法
  5. mysql动态扩展_动态可扩展查询MYSQL5.7JSON+虚拟列+Mybatis
  6. php查询类似abab,ABAB中的正则表达式匹配编号(必须相同) - php
  7. python转字符_python 字符转换
  8. char截取字符串_字符串的排列(滑动窗口)
  9. 三菱plc选型手册_模拟量是什么?PLC和模拟量是如何转换的?
  10. 数据结构——二叉树的最长路径问题