P4922-[MtOI2018]崩坏3?非酋之战!【dp】
正题
题目链接:https://www.luogu.com.cn/problem/P4922
题目大意
题目好长直接放了
在崩坏 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\%\) 的数据,保证:
\]
解题思路
快三年之前的比赛上面写的题了,那时候只会写\(O(n^3)\)的\(dp\)。(什么一雪前耻)
首先有很多技能一看就是没有用的,有用的只有技能(叠燃烧),分支攻击(叠减速),大招。
然后大招一定是最后放的,还有一个就是\(n\)的范围好像是可以\(O(n^2)\)卡一下的。
设\(f_{i,j}\)表示到前\(i\)次,\(j\)层燃烧,然后剩下\(i-j\)层就是减速了。
这样\(dp\)就好了,时间复杂度\(O(n^2)\)因为\(j\leq i\)所以常数是\(\frac{1}{2}\)
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】的更多相关文章
- Codeforces Round #323 (Div. 2) Once Again... CodeForces - 582B 最长非下降子序列【dp】(不明白)
B. Once Again... time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 连续子数组的和的绝对值的最大值、最小值(非绝对值的话直接dp动态规划)
前缀和的思路: sum[i] = num[0]+num[1]+......+num[i-1] sum[j] = num[0]+num[1]+......+num[j-1] 那么:num[i]+num[ ...
- 狼人杀BETA阶段计划简介
狼人杀beta阶段任务与目标 简介 一.前言 狼人杀alpha阶段终于在组团刷夜中结束了,我们取得了一些成绩,同时也暴露了团队的一些问题.但不管怎样,有了在alpha版本中收获的经验,我们将在beta ...
- 原生JS实现音乐播放器!
前 言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播放的同时支持图片的 ...
- [学习笔记] 模拟退火 (Simulated Annealing)
真没想到这东西真的在考场上用到了...顺便水篇blog以示诈尸好了(逃 模拟退火算法 模拟退火是一种随机化算法, 用于求函数的极值qwq 比如给出一个问题, 我们要求最优解的值, 但是可能的方案数量极 ...
- kali系统固化到固态硬盘小记(赠送给广大折腾党的笔记)
1.首先你需要一个移动硬盘和一个移动硬盘盒子(一根数据转换线,一般买盒子商家会赠送的) SSD硬盘要事先格式化一下格式,不然识别不出来 2.准备好Kali镜像,传送门在这里https://www.ka ...
- Python爬虫——你们要的王者荣耀高清图
曾经144区的王者 学了计算机后 头发逐渐从李白变成了达摩 秀发有何用,变秃亦变强 (emmm徒弟说李白比达摩强,变秃不一定变强) 前言 前几天开了农药的安装包,发现农药是.Net实现的游戏 虽然游戏 ...
- 【转】 DOTA2中的伪随机及其lua实现
因为单纯的随机确实会影响到竞技性,所以dota2引入的是伪随机机制,在大量的技能中,比如说混沌的混乱之箭.剑圣的剑舞.冰女的冰霜领域之类的技能,都利用了伪随机机制. 而纯随机,或者标准正态分布并不会因 ...
- BZOJ1093或洛谷2272 [ZJOI2007]最大半连通子图
BZOJ原题链接 洛谷原题链接 和 Going from u to v or from v to u?(题解)这道题类似,只不过是求最大子图的大小和个数而已. 一样用\(tarjan\)求强连通分量, ...
随机推荐
- WPF以鼠标当前位置进行缩放
<Window x:Class="ImageViewer.MainWindow" xmlns="http://schemas.microsoft.com/winfx ...
- uwp 之吐司 toast
Toast -------------------------------------------------------------- var t = Windows.UI.Notification ...
- QT 中的模态和非模态对话框
void MainWindow::on_pushButton_clicked() { //模态 QDialog dlg(this); dlg.resize(100,100); dlg.exec(); ...
- 10.SpringMVC之格式化、校验
数据格式化 数据格式化的注解: 数据校验JSR303 Hibernate Validator扩展注解 启动 springMVC数据校验 转换.格式化.校验出错处理:
- linux下设备驱动的结构&编译&加载
构造和运行模块 insmod modprobe rmmod 用来装载模块到正运行的内核和移除模块的用户空间工具. #include<linux/init.h> module_init(in ...
- Timer和TimerTask(转载)
下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了r ...
- BUU-CTF[CISCN2019 华东南赛区]Web11
BUU-CTF[CISCN2019 华东南赛区]Web11 页面最下端有提示Build with Smarty ! 确定页面使用的是Smarty模板引擎.输入{$smarty.version}就可以看 ...
- PyQT5基础布局管理
绝对定位布局 使用move(x, y)可以对窗口进行布局,以窗口左上角为原点,向右为 x 轴正方向,向下为 y 轴正方向,移动(x,y); import sys from PyQt5.QtGui im ...
- 给dubbo贡献源码,做梦都在修bug
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 一 在之前的文章<redis在微服务领域的贡献>中,从一次面试经历中了解了redi ...
- 对easyui-validatebox的验证类型的扩展--补充
一.说明 这篇文章是<对easyui-validatebox的验证类型的扩展>的补充.在工程的持续开发中,我们又对此进行了更多的补充. 二.补充代码 增加了更多的验证类型. /* * 比较 ...