P4922-[MtOI2018]崩坏3?非酋之战!【dp】
正題
題目鏈接: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】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos清洗流量多少最好用(DDOS清洗
- 下一篇: P7581-「RdOI R2」路径权值【