nyoj 61 傳紙條(一)

2021-06-21 15:02:27 字數 730 閱讀 2123

分析: 一道雙線程動態規劃題,與第六屆河南acm比賽的題類似.

題意:小紙條從(1,1)傳到(m,n),再傳回來,並且路線不能交叉,使好感度之和最高.我們可以認為是同時找出兩條從(1,1)傳到(m,n)的不相交的路線.

方法是:

計算每一步情況下的情況,一條道路用i,j控制,另一條用x,y控制.

從矩陣的角度看,k對應的是一條一條的斜線,值為橫縱座標之和,從3(1+2)開始,到m+n-2.i從1到m-1,對應的j為k-i,x從2到m,對應的y為k-j;

dp[k%2][i][x]中記錄的是從(1,1)到(i,j),(x,y)兩個點的最大好感度。a由計算得到,隨橫座標變化。

狀態轉移為從需要計算的兩點的(上,上),(上,左),(左,上),(左,左)方向的兩點到(i,j),(x,y)的最大好感度+map[i][j]+map[x][y]。

**為:

for(k=3;kn||j<=1)

continue;

for(x=i+1,y=k-x;x<=m;x++,y--)

}}

我的程式效率不是太高,看別人的部落格說用網路流能更優化演算法,可惜我不會網路流,要學的東西還很多。加油!!!

附上我的程式

#include #include #include #define maxn 61

using namespace std;

int main()}}

cout<

nyoj61 傳紙條(一) dp

思路 兩人乙個從左上角出發只能向右和向下,另一人從右下角出發只能向左和向上,可以看做兩人都是從右下角出發,且只能向左和向上傳紙條,並且兩條路徑不會相交,因為乙個人只會傳一次,那麼隨便畫乙個圖就能知道兩條路徑是閉合的圖形。因此我們可以定義dp x1,y1,x2,y2 是從 0,0 出發第一人到達 x1...

nyoj 61 傳紙條(一) 動態規劃

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 小淵和小軒是好朋友也是同班同學,他們在一起總有談不完的話題。一次素質拓展活動中,班上同學安排做成乙個m行n列的矩陣,而小淵和小軒被安排在矩陣對角線的兩端,因此,他們就無法直接交談了。幸運的是,他們可以通過傳紙條來進行交流。紙條要...

nyoj61 傳紙條(一) (雙線dp)

初次學雙程序dp,其實就是多維dp,但是就是多一維我的腦子就轉不過來了,模模糊糊看得懂而已,從矩陣的左上角 1,1 點到矩陣的右下角 m,n 點找到兩條不相交的路徑使其值最大,題中是從 1,1 到 m,n 走一次,再從 m,n 到 1,1 走一次,我們可以等價變形 一下,變為 同時從 1,1 走向 ...