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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

codevs——2853 方格游戏(棋盘DP)

發(fā)布時(shí)間:2025/3/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 codevs——2853 方格游戏(棋盘DP) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?時(shí)間限制: 1 s

?空間限制: 128000 KB

?題目等級(jí) : 鉆石 Diamond

題解 題目描述?Description

菜菜看到了一個(gè)游戲,叫做方格游戲~

游戲規(guī)則是這樣的:

在一個(gè)n*n的格子中,在每個(gè)1*1的格子里都能獲得一定數(shù)量的積分獎(jiǎng)勵(lì),記左上角為(1,1),右下角為(n,n)。游戲者需要選擇一條(1,1)到(n,n)的路徑,并獲得路徑上獎(jiǎng)勵(lì)的積分。對(duì)于路徑當(dāng)然也有要求啦,要求是只能往坐標(biāo)變大的方向走【從(x,y)到(x+1,y)或者(x,y+1)】,走過(guò)2n-1個(gè)區(qū)域到達(dá)(n,n)。當(dāng)然,獲得的積分最高的就能取勝啦。

這時(shí),菜菜看到了他的好友月月,于是邀請(qǐng)她來(lái)玩雙人版的。雙人版的規(guī)則就是在單人版的基礎(chǔ)上加上一條兩人的路線不能相同。月月知道菜菜的很聰明,怕輸?shù)锰珣K,就不太愿意和他玩。菜菜可慌了,于是定義了一個(gè)公平值D,這個(gè)公平值等于倆人所選擇的路徑所能獲得的積分一一對(duì)應(yīng)相減的差的絕對(duì)值之和,即D=sigma (|kxi-kyi|)|(kx,ky分別為菜菜,月月走過(guò)的每一個(gè)區(qū)域的叢林系數(shù))。不過(guò)這可是個(gè)龐大的計(jì)算任務(wù),菜菜找到了你,請(qǐng)你幫忙計(jì)算公平值的最大值。

輸入描述?Input Description

? ? 第一行,一個(gè)正整數(shù)n

????接下來(lái)的n行,每行n個(gè)整數(shù),表示叢林中每個(gè)區(qū)域的公平值

輸出描述?Output Description

一個(gè)整數(shù)Dmax,即公平值的最大值

樣例輸入?Sample Input

4

1?2?3?4

1?5?3?2

8?1?3?4

3?2?1?5

樣例輸出?Sample Output

13

數(shù)據(jù)范圍及提示?Data Size & Hint

對(duì)于20%的數(shù)據(jù),保證0<n≤20

對(duì)于50%的數(shù)據(jù),保證0<n≤50

對(duì)于100%的數(shù)據(jù),保證0<n≤100且對(duì)于所有的i,j保證|Kij|≤300

分類標(biāo)簽?Tags?點(diǎn)此展開(kāi)?

動(dòng)態(tài)規(guī)劃?棋盤型DP

代碼

#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,a[200][200],dp[200][200][400]; int main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}} for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=2*n;k++)dp[i][j][k]=-2147483640;dp[1][1][2]=0; for(int k=3;k<=2*n;k++){for(int j=1;j<=n;j++){for(int i=1;i<=n;i++){if(k-i>n || k-j>n) continue;if(k-i<1 || k-j<1) break; else dp[i][j][k]=max(max(dp[i-1][j][k-1],dp[i][j][k-1]),max(dp[i][j-1][k-1],dp[i-1][j-1][k-1]))+abs(a[i][k-i]-a[j][k-j]);}}}cout<<dp[n][n][2*n]; }

?

?

思路: ?

? ?狀態(tài)壓縮,四維會(huì)爆!改成三維!?

? ?本題是一道典型的動(dòng)態(tài)規(guī)劃題。

????我們首先來(lái)設(shè)計(jì)狀態(tài),用f[i][j][k]表示第i步時(shí),菜菜的路徑在橫坐標(biāo)為j的區(qū)域,月月的路徑在橫坐標(biāo)為k的格子上時(shí),當(dāng)前公平值的最大值。這樣三個(gè)值用來(lái)表示狀態(tài)已經(jīng)足夠,因?yàn)椴瞬撕驮略碌奈恢每梢杂?j,i-j+1)和(k,i-k+1)來(lái)表示。

????狀態(tài)轉(zhuǎn)移方程根據(jù)兩人移動(dòng)的方法設(shè)置如下:

????f[i][j][k]?=?max{f[i-1][j-x][k-y]}?+?|a[j][i-j+1]?-?a[k][i-k+1]|,??x,y?=?0,1}

????這樣,本題就解決了,本題的時(shí)間復(fù)雜度為O(n3)。?

千萬(wàn)要注意在循環(huán)的時(shí)候是先循環(huán)k再循環(huán)j最后i ?也就是說(shuō)要倒著循環(huán)

轉(zhuǎn)載于:https://www.cnblogs.com/z360/p/6746300.html

總結(jié)

以上是生活随笔為你收集整理的codevs——2853 方格游戏(棋盘DP)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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