3 20記錄 座標DP

2021-10-22 17:20:21 字數 1238 閱讀 9268

(原題 洛谷p1006)

區間dp其實就是多個點匯入乙個點的操作,整體思路如下:

dp0 = max(dp1,dp2,dp3,…)+ 決策

這題最簡單粗暴的辦法就是,既然我們乙個點(i,j)不能過兩次,那乾脆開乙個四維的dp[i][j][k][l],只要i=k && j=l就直接認為這個四維的點不可通過就行了。(當然了,多次經過(m,n)是不可避免的,所以這地方要特判)

**如下:

#include

#include

#include

using

namespace std;

int dp[51]

[51][

51][51

],a[51]

[51];

intmain()

for(i =

1;i <= n;i++)}

}}printf

("%d"

,dp[n]

[m][n]

[m])

;return0;

}

(這裡我按自己習慣寫的n行m列,對結果沒影響)

還有一種優化思路:矩形有乙個性質,就是橫縱座標的增加等同於步數的增加,而且所有在同一矩形中的點都是如此。因此對於x1,x2,x3,…,他們的縱座標都可以用k-x1,k-x2,k-x3,…來表示。因此只要先統一步數,橫座標就能代替對應的縱座標(換句話說,步數的迴圈優先順序最大),這可以省去一維。

**如下:

#include

#include

#include

using

namespace std;

int dp[

101][51

][51]

,a[51][

51];int

main()

for(i =

1;i < m + n -

1;i++)}

}printf

("%d"

,dp[m + n -2]

[n][n]);

return0;

}

(注意:由於起點我們標註的是(1,1),故對於任意點(x,y),其與步數z的關係應該為x+y=z-2)

TMS320F28035學習記錄五

iqmath lib的使用 參考手冊 iqmath quickstart.pdf 版本v1.6.0 存放路徑 c ti controlsuite libs math iqmath v160 doc 1.tms320f28035是 ti公司推出的 32位定點 dsp晶元,其硬體本身不支援浮點數運算,在...

DP 路徑記錄

題意 很多肥老鼠認為,長的越肥,奔跑速度就越快,為了反駁這個觀點,你現在需要對老鼠的體重和速度進行研究,你要在老鼠序列中找出乙個子串行,使得老鼠的體重在增加,但是速度卻在減慢 input 輸入以eof結束。輸入中每行有兩個正整數,分別表示老鼠的體重和速度,範圍均在1到10000之間,輸入資料最多有1...

3 11記錄 區間DP

基本上是個區間dp的板子。include include include using namespace std long long a 101 dp 101 101 n long long dfs int l,int r return dp l r int main 在這道題中,當我們取出一張牌,...