日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 n10,000atk0(mod?10)atk10,000maxAtk264?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 iji所以常數是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】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。