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

1|0正题

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


1|1题目大意

题目好长直接放了

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

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

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

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

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

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

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

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

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

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

对于 100% 的数据,保证:

n10,000atk0(mod 10)atk10,000maxAtk2641


1|2解题思路

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

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

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

fi,j表示到前i次,j层燃烧,然后剩下ij层就是减速了。

这样dp就好了,时间复杂度O(n2)因为ji所以常数是12


1|3code

#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; }

__EOF__

本文作者QuantAsk
本文链接https://www.cnblogs.com/QuantAsk/p/14728907.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   QuantAsk  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示