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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

atcoder E - Greedy Ant(最优解等价+dp)

發(fā)布時(shí)間:2023/12/3 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 atcoder E - Greedy Ant(最优解等价+dp) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

E - Greedy Ant

Grice題解最開始看不懂神的思路,還評論請教了一波應(yīng)該是個(gè)集訓(xùn)隊(duì)大佬QaQ


snuke在當(dāng)前輪直接選取,那么狀態(tài)會(huì)非常不好記錄 我們保留snuke在之前輪,選擇放棄暫時(shí)不選的次數(shù),然后等螞蟻?zhàn)叩竭@來了再選
雖然這個(gè)跟原游戲不同,但顯然其不會(huì)優(yōu)于最優(yōu)解,也包含最優(yōu)解

狀態(tài)表示:fl,r,kf_{l,r,k}fl,r,k?開區(qū)間(l,r)(l,r)(l,r)內(nèi)的糖果已經(jīng)被取走了,snuke\text{snuke}snuke還能選擇kkk次的最優(yōu)解
狀態(tài)轉(zhuǎn)移:

  • 滿足k>0k>0k>0,那么snuke\text{snuke}snuke可以選擇lll或者rrr,則分別轉(zhuǎn)移到fl?1,r,k?1+alf_{l-1,r,k-1}+a_lfl?1,r,k?1?+al?fl,r+1,k?1+arf_{l,r+1,k-1}+a_rfl,r+1,k?1?+ar?
  • 目前snuke\text{snuke}snuke不選擇,則對手選擇那么用fl?1,r,k+1f_{l-1,r,k+1}fl?1,r,k+1?或者fl,r+1,k+1f_{l,r+1,k+1}fl,r+1,k+1?轉(zhuǎn)移(按照題意,這里轉(zhuǎn)移固定,取al,ara_l,a_ral?,ar?較大的一個(gè))
#include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=410; int n; ll f[N][N][N],a[N]; ll dp(int l,int r,int k) {if(f[l][r][k]!=-1) return f[l][r][k];ll &ans=f[l][r][k];ans=0;if(l>=1){if(k) ans=max(ans,a[l]+dp(l-1,r,k-1));if(a[l]>a[r]) ans=max(ans,dp(l-1,r,k+1));}if(r<=n){if(k) ans=max(ans,a[r]+dp(l,r+1,k-1));if(a[r]>a[l]) ans=max(ans,dp(l,r+1,k+1));}return ans;} int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];memset(f,-1,sizeof f);for(int i=0;i<=n;i++)cout<<dp(i,i+1,1)<<'\n';return 0; }

上述博客博主太熱心了,并且講的非常詳細(xì),以至于題解總結(jié)基本都是抄的~~

總結(jié)

以上是生活随笔為你收集整理的atcoder E - Greedy Ant(最优解等价+dp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。